# RUN: llvm-mc -triple arm64-apple-darwin -mattr=crypto -output-asm-variant=1 --disassemble -print-imm-hex < %s | FileCheck %s

0x00 0xb8 0x20 0x0e
0x00 0xb8 0x20 0x4e
0x00 0xb8 0x60 0x0e
0x00 0xb8 0x60 0x4e
0x00 0xb8 0xa0 0x0e
0x00 0xb8 0xa0 0x4e

# CHECK: abs.8b  v0, v0
# CHECK: abs.16b v0, v0
# CHECK: abs.4h  v0, v0
# CHECK: abs.8h  v0, v0
# CHECK: abs.2s  v0, v0
# CHECK: abs.4s  v0, v0

0x00 0x84 0x20 0x0e
0x00 0x84 0x20 0x4e
0x00 0x84 0x60 0x0e
0x00 0x84 0x60 0x4e
0x00 0x84 0xa0 0x0e
0x00 0x84 0xa0 0x4e
0x00 0x84 0xe0 0x4e

# CHECK: add.8b  v0, v0, v0
# CHECK: add.16b v0, v0, v0
# CHECK: add.4h  v0, v0, v0
# CHECK: add.8h  v0, v0, v0
# CHECK: add.2s  v0, v0, v0
# CHECK: add.4s  v0, v0, v0
# CHECK: add.2d  v0, v0, v0

0x41 0x84 0xe3 0x5e

# CHECK: add d1, d2, d3

0x00 0x40 0x20 0x0e
0x00 0x40 0x20 0x4e
0x00 0x40 0x60 0x0e
0x00 0x40 0x60 0x4e
0x00 0x40 0xa0 0x0e
0x00 0x40 0xa0 0x4e

# CHECK: addhn.8b   v0, v0, v0
# CHECK: addhn2.16b v0, v0, v0
# CHECK: addhn.4h   v0, v0, v0
# CHECK: addhn2.8h  v0, v0, v0
# CHECK: addhn.2s   v0, v0, v0
# CHECK: addhn2.4s  v0, v0, v0

0x00 0xbc 0x20 0x0e
0x00 0xbc 0x20 0x4e
0x00 0xbc 0x60 0x0e
0x00 0xbc 0x60 0x4e
0x00 0xbc 0xa0 0x0e
0x00 0xbc 0xa0 0x4e
0x00 0xbc 0xe0 0x4e

# CHECK: addp.8b   v0, v0, v0
# CHECK: addp.16b  v0, v0, v0
# CHECK: addp.4h   v0, v0, v0
# CHECK: addp.8h   v0, v0, v0
# CHECK: addp.2s   v0, v0, v0
# CHECK: addp.4s   v0, v0, v0
# CHECK: addp.2d   v0, v0, v0

0x00 0xb8 0xf1 0x5e

# CHECK: addp.2d d0, v0

0x00 0xb8 0x31 0x0e
0x00 0xb8 0x31 0x4e
0x00 0xb8 0x71 0x0e
0x00 0xb8 0x71 0x4e
0x00 0xb8 0xb1 0x4e

# CHECK: addv.8b  b0, v0
# CHECK: addv.16b b0, v0
# CHECK: addv.4h  h0, v0
# CHECK: addv.8h  h0, v0
# CHECK: addv.4s  s0, v0


# INS/DUP
0x60 0x0c 0x08 0x4e
0x60 0x0c 0x04 0x4e
0x60 0x0c 0x04 0x0e
0x60 0x0c 0x02 0x4e
0x60 0x0c 0x02 0x0e
0x60 0x0c 0x01 0x4e
0x60 0x0c 0x01 0x0e

# CHECK: dup.2d  v0, x3
# CHECK: dup.4s  v0, w3
# CHECK: dup.2s  v0, w3
# CHECK: dup.8h  v0, w3
# CHECK: dup.4h  v0, w3
# CHECK: dup.16b v0, w3
# CHECK: dup.8b  v0, w3

0x60 0x04 0x18 0x4e
0x60 0x04 0x0c 0x0e
0x60 0x04 0x0c 0x4e
0x60 0x04 0x06 0x0e
0x60 0x04 0x06 0x4e
0x60 0x04 0x03 0x0e
0x60 0x04 0x03 0x4e

# CHECK: dup.2d  v0, v3[1]
# CHECK: dup.2s  v0, v3[1]
# CHECK: dup.4s  v0, v3[1]
# CHECK: dup.4h  v0, v3[1]
# CHECK: dup.8h  v0, v3[1]
# CHECK: dup.8b  v0, v3[1]
# CHECK: dup.16b v0, v3[1]


0x43 0x2c 0x14 0x4e
0x43 0x2c 0x14 0x4e
0x43 0x3c 0x14 0x0e
0x43 0x3c 0x14 0x0e
0x43 0x3c 0x18 0x4e
0x43 0x3c 0x18 0x4e

# CHECK: smov.s  x3, v2[2]
# CHECK: smov.s  x3, v2[2]
# CHECK: mov.s  w3, v2[2]
# CHECK: mov.s  w3, v2[2]
# CHECK: mov.d  x3, v2[1]
# CHECK: mov.d  x3, v2[1]

0xa2 0x1c 0x18 0x4e
0xa2 0x1c 0x0c 0x4e
0xa2 0x1c 0x06 0x4e
0xa2 0x1c 0x03 0x4e

0xa2 0x1c 0x18 0x4e
0xa2 0x1c 0x0c 0x4e
0xa2 0x1c 0x06 0x4e
0xa2 0x1c 0x03 0x4e

# CHECK: mov.d v2[1], x5
# CHECK: mov.s v2[1], w5
# CHECK: mov.h v2[1], w5
# CHECK: mov.b v2[1], w5

# CHECK: mov.d v2[1], x5
# CHECK: mov.s v2[1], w5
# CHECK: mov.h v2[1], w5
# CHECK: mov.b v2[1], w5

0xe2 0x45 0x18 0x6e
0xe2 0x25 0x0c 0x6e
0xe2 0x15 0x06 0x6e
0xe2 0x0d 0x03 0x6e

0xe2 0x05 0x18 0x6e
0xe2 0x45 0x1c 0x6e
0xe2 0x35 0x1e 0x6e
0xe2 0x2d 0x15 0x6e

# CHECK: mov.d v2[1], v15[1]
# CHECK: mov.s v2[1], v15[1]
# CHECK: mov.h v2[1], v15[1]
# CHECK: mov.b v2[1], v15[1]

# CHECK: mov.d v2[1], v15[0]
# CHECK: mov.s v2[3], v15[2]
# CHECK: mov.h v2[7], v15[3]
# CHECK: mov.b v2[10], v15[5]

# INS/DUP (non-standard)
0x60 0x0c 0x08 0x4e
0x60 0x0c 0x0c 0x4e
0x60 0x0c 0x0c 0x0e
0x60 0x0c 0x0e 0x4e
0x60 0x0c 0x0e 0x0e
0x60 0x0c 0x0f 0x4e
0x60 0x0c 0x0f 0x0e

# CHECK: dup.2d  v0, x3
# CHECK: dup.4s  v0, w3
# CHECK: dup.2s  v0, w3
# CHECK: dup.8h  v0, w3
# CHECK: dup.4h  v0, w3
# CHECK: dup.16b v0, w3
# CHECK: dup.8b  v0, w3

0xe2 0x75 0x18 0x6e
0xe2 0x35 0x0c 0x6e
0xe2 0x15 0x06 0x6e
0xe2 0x0d 0x03 0x6e

0xe2 0x05 0x18 0x6e
0xe2 0x55 0x1c 0x6e
0xe2 0x35 0x1e 0x6e
0xe2 0x2d 0x15 0x6e

# CHECK: mov.d v2[1], v15[1]
# CHECK: mov.s v2[1], v15[1]
# CHECK: mov.h v2[1], v15[1]
# CHECK: mov.b v2[1], v15[1]

# CHECK: mov.d v2[1], v15[0]
# CHECK: mov.s v2[3], v15[2]
# CHECK: mov.h v2[7], v15[3]
# CHECK: mov.b v2[10], v15[5]

0x00 0x1c 0x20 0x0e
0x00 0x1c 0x20 0x4e

# CHECK: and.8b  v0, v0, v0
# CHECK: and.16b v0, v0, v0

0x00 0x1c 0x60 0x0e

# CHECK: bic.8b  v0, v0, v0

0x00 0x8c 0x20 0x2e
0x00 0x3c 0x20 0x0e
0x00 0x34 0x20 0x0e
0x00 0x34 0x20 0x2e
0x00 0x3c 0x20 0x2e
0x00 0x8c 0x20 0x0e
0x00 0xd4 0xa0 0x2e
0x00 0xec 0x20 0x2e
0x00 0xec 0xa0 0x2e
0x00 0xd4 0x20 0x2e
0x00 0xd4 0x20 0x0e
0x00 0xe4 0x20 0x0e
0x00 0xe4 0x20 0x2e
0x00 0xe4 0xa0 0x2e
0x00 0xfc 0x20 0x2e
0x00 0xc4 0x20 0x2e
0x00 0xc4 0x20 0x0e
0x00 0xf4 0x20 0x2e
0x00 0xf4 0x20 0x0e
0x00 0xc4 0xa0 0x2e
0x00 0xc4 0xa0 0x0e
0x00 0xf4 0xa0 0x2e
0x00 0xf4 0xa0 0x0e
0x00 0xcc 0x20 0x0e
0x00 0xcc 0xa0 0x0e
0x00 0xdc 0x20 0x0e
0x00 0xdc 0x20 0x2e
0x00 0xfc 0x20 0x0e
0x00 0xfc 0xa0 0x0e
0x00 0xd4 0xa0 0x0e
0x00 0x94 0x20 0x0e
0x00 0x94 0x20 0x2e
0x00 0x9c 0x20 0x0e
0x00 0x9c 0x20 0x2e
0x00 0x7c 0x20 0x0e
0x00 0x74 0x20 0x0e
0x00 0x04 0x20 0x0e
0x00 0x24 0x20 0x0e
0x00 0xa4 0x20 0x0e
0x00 0x64 0x20 0x0e
0x00 0xac 0x20 0x0e
0x00 0x6c 0x20 0x0e
0x00 0x0c 0x20 0x0e
0x00 0xb4 0x60 0x0e
0x00 0xb4 0x60 0x2e
0x00 0x5c 0x20 0x0e
0x00 0x4c 0x20 0x0e
0x00 0x2c 0x20 0x0e
0x00 0x14 0x20 0x0e
0x00 0x54 0x20 0x0e
0x00 0x44 0x20 0x0e
0x00 0x84 0x20 0x2e
0x00 0x7c 0x20 0x2e
0x00 0x74 0x20 0x2e
0x00 0x04 0x20 0x2e
0x00 0x24 0x20 0x2e
0x00 0xa4 0x20 0x2e
0x00 0x64 0x20 0x2e
0x00 0xac 0x20 0x2e
0x00 0x6c 0x20 0x2e
0x00 0x0c 0x20 0x2e
0x00 0x5c 0x20 0x2e
0x00 0x4c 0x20 0x2e
0x00 0x2c 0x20 0x2e
0x00 0x14 0x20 0x2e
0x00 0x54 0x20 0x2e
0x00 0x44 0x20 0x2e

# CHECK: cmeq.8b	v0, v0, v0
# CHECK: cmge.8b	v0, v0, v0
# CHECK: cmgt.8b	v0, v0, v0
# CHECK: cmhi.8b	v0, v0, v0
# CHECK: cmhs.8b	v0, v0, v0
# CHECK: cmtst.8b	v0, v0, v0
# CHECK: fabd.2s	v0, v0, v0
# CHECK: facge.2s	v0, v0, v0
# CHECK: facgt.2s	v0, v0, v0
# CHECK: faddp.2s	v0, v0, v0
# CHECK: fadd.2s	v0, v0, v0
# CHECK: fcmeq.2s	v0, v0, v0
# CHECK: fcmge.2s	v0, v0, v0
# CHECK: fcmgt.2s	v0, v0, v0
# CHECK: fdiv.2s	v0, v0, v0
# CHECK: fmaxnmp.2s	v0, v0, v0
# CHECK: fmaxnm.2s	v0, v0, v0
# CHECK: fmaxp.2s	v0, v0, v0
# CHECK: fmax.2s	v0, v0, v0
# CHECK: fminnmp.2s	v0, v0, v0
# CHECK: fminnm.2s	v0, v0, v0
# CHECK: fminp.2s	v0, v0, v0
# CHECK: fmin.2s	v0, v0, v0
# CHECK: fmla.2s	v0, v0, v0
# CHECK: fmls.2s	v0, v0, v0
# CHECK: fmulx.2s	v0, v0, v0
# CHECK: fmul.2s	v0, v0, v0
# CHECK: frecps.2s	v0, v0, v0
# CHECK: frsqrts.2s	v0, v0, v0
# CHECK: fsub.2s	v0, v0, v0
# CHECK: mla.8b	v0, v0, v0
# CHECK: mls.8b	v0, v0, v0
# CHECK: mul.8b	v0, v0, v0
# CHECK: pmul.8b	v0, v0, v0
# CHECK: saba.8b	v0, v0, v0
# CHECK: sabd.8b	v0, v0, v0
# CHECK: shadd.8b	v0, v0, v0
# CHECK: shsub.8b	v0, v0, v0
# CHECK: smaxp.8b	v0, v0, v0
# CHECK: smax.8b	v0, v0, v0
# CHECK: sminp.8b	v0, v0, v0
# CHECK: smin.8b	v0, v0, v0
# CHECK: sqadd.8b	v0, v0, v0
# CHECK: sqdmulh.4h v0, v0, v0
# CHECK: sqrdmulh.4h v0, v0, v0
# CHECK: sqrshl.8b	v0, v0, v0
# CHECK: sqshl.8b	v0, v0, v0
# CHECK: sqsub.8b	v0, v0, v0
# CHECK: srhadd.8b	v0, v0, v0
# CHECK: srshl.8b	v0, v0, v0
# CHECK: sshl.8b	v0, v0, v0
# CHECK: sub.8b	v0, v0, v0
# CHECK: uaba.8b	v0, v0, v0
# CHECK: uabd.8b	v0, v0, v0
# CHECK: uhadd.8b	v0, v0, v0
# CHECK: uhsub.8b	v0, v0, v0
# CHECK: umaxp.8b	v0, v0, v0
# CHECK: umax.8b	v0, v0, v0
# CHECK: uminp.8b	v0, v0, v0
# CHECK: umin.8b	v0, v0, v0
# CHECK: uqadd.8b	v0, v0, v0
# CHECK: uqrshl.8b	v0, v0, v0
# CHECK: uqshl.8b	v0, v0, v0
# CHECK: uqsub.8b	v0, v0, v0
# CHECK: urhadd.8b	v0, v0, v0
# CHECK: urshl.8b	v0, v0, v0
# CHECK: ushl.8b	v0, v0, v0

0x00 0x1c 0xe0 0x2e
0x00 0x1c 0xa0 0x2e
0x00 0x1c 0x60 0x2e
0x00 0x1c 0x20 0x2e
0x00 0x1c 0xe0 0x0e
0x00 0x1c 0xa1 0x0e

# CHECK: bif.8b	v0, v0, v0
# CHECK: bit.8b	v0, v0, v0
# CHECK: bsl.8b	v0, v0, v0
# CHECK: eor.8b	v0, v0, v0
# CHECK: orn.8b	v0, v0, v0
# CHECK: orr.8b	v0, v0, v1

0x00 0x68 0x20 0x0e
0x00 0x68 0x20 0x4e
0x00 0x68 0x60 0x0e
0x00 0x68 0x60 0x4e
0x00 0x68 0xa0 0x0e
0x00 0x68 0xa0 0x4e

# CHECK: sadalp.4h	v0, v0
# CHECK: sadalp.8h	v0, v0
# CHECK: sadalp.2s	v0, v0
# CHECK: sadalp.4s	v0, v0
# CHECK: sadalp.1d	v0, v0
# CHECK: sadalp.2d	v0, v0

0x00 0x48 0x20 0x0e
0x00 0x48 0x20 0x2e
0x00 0x58 0x20 0x0e
0x00 0xf8 0xa0 0x0e
0x00 0xc8 0x21 0x0e
0x00 0xc8 0x21 0x2e
0x00 0xb8 0x21 0x0e
0x00 0xb8 0x21 0x2e
0x00 0xa8 0x21 0x0e
0x00 0xa8 0x21 0x2e
0x00 0xa8 0xa1 0x0e
0x00 0xa8 0xa1 0x2e
0x00 0xb8 0xa1 0x0e
0x00 0xb8 0xa1 0x2e
0x00 0xf8 0xa0 0x2e
0x00 0xd8 0xa1 0x0e
0x00 0xd8 0xa1 0x2e
0x00 0xf8 0xa1 0x2e
0x00 0xb8 0x20 0x2e
0x00 0x58 0x20 0x2e
0x00 0x58 0x60 0x2e
0x00 0x18 0x20 0x0e
0x00 0x08 0x20 0x2e
0x00 0x08 0x20 0x0e
0x00 0x68 0x20 0x0e
0x00 0x28 0x20 0x0e
0x00 0xd8 0x21 0x0e
0x00 0x38 0x21 0x2e
0x00 0x78 0x20 0x0e
0x00 0x78 0x20 0x2e
0x00 0x48 0x21 0x0e
0x00 0x28 0x21 0x2e
0x00 0x38 0x20 0x0e
0x00 0x68 0x20 0x2e
0x00 0x28 0x20 0x2e
0x00 0xd8 0x21 0x2e
0x00 0x48 0x21 0x2e
0x00 0xc8 0xa1 0x0e
0x00 0xc8 0xa1 0x2e
0x00 0x38 0x20 0x2e
0x00 0x28 0x21 0x0e
0x00 0x48 0x20 0x0e
0x00 0x48 0x20 0x2e
0x00 0x58 0x20 0x0e
0x00 0xf8 0xa0 0x0e
0x00 0xc8 0x21 0x0e
0x00 0xc8 0x21 0x2e
0x00 0xb8 0x21 0x0e
0x00 0xb8 0x21 0x2e
0x00 0xa8 0x21 0x0e
0x00 0xa8 0x21 0x2e
0x00 0xa8 0xa1 0x0e
0x00 0xa8 0xa1 0x2e
0x00 0xb8 0xa1 0x0e
0x00 0xb8 0xa1 0x2e
0x00 0xf8 0xa0 0x2e
0x00 0xd8 0xa1 0x0e
0x00 0xd8 0xa1 0x2e
0x00 0xf8 0xa1 0x2e
0x00 0xb8 0x20 0x2e
0x00 0x58 0x20 0x2e
0x00 0x58 0x60 0x2e
0x00 0x18 0x20 0x0e
0x00 0x08 0x20 0x2e
0x00 0x08 0x20 0x0e
0x00 0x68 0x20 0x0e
0x00 0x28 0x20 0x0e
0x00 0xd8 0x21 0x0e
0x00 0x38 0x21 0x2e
0x00 0x78 0x20 0x0e
0x00 0x78 0x20 0x2e
0x00 0x48 0x21 0x0e
0x00 0x28 0x21 0x2e
0x00 0x38 0x20 0x0e
0x00 0x68 0x20 0x2e
0x00 0x28 0x20 0x2e
0x00 0xd8 0x21 0x2e
0x00 0x48 0x21 0x2e
0x00 0xc8 0xa1 0x0e
0x00 0xc8 0xa1 0x2e
0x00 0x38 0x20 0x2e
0x00 0x28 0x21 0x0e

# CHECK: cls.8b	v0, v0
# CHECK: clz.8b	v0, v0
# CHECK: cnt.8b	v0, v0
# CHECK: fabs.2s	v0, v0
# CHECK: fcvtas.2s	v0, v0
# CHECK: fcvtau.2s	v0, v0
# CHECK: fcvtms.2s	v0, v0
# CHECK: fcvtmu.2s	v0, v0
# CHECK: fcvtns.2s	v0, v0
# CHECK: fcvtnu.2s	v0, v0
# CHECK: fcvtps.2s	v0, v0
# CHECK: fcvtpu.2s	v0, v0
# CHECK: fcvtzs.2s	v0, v0
# CHECK: fcvtzu.2s	v0, v0
# CHECK: fneg.2s	v0, v0
# CHECK: frecpe.2s	v0, v0
# CHECK: frsqrte.2s	v0, v0
# CHECK: fsqrt.2s	v0, v0
# CHECK: neg.8b	v0, v0
# CHECK: mvn.8b	v0, v0
# CHECK: rbit.8b	v0, v0
# CHECK: rev16.8b	v0, v0
# CHECK: rev32.8b	v0, v0
# CHECK: rev64.8b	v0, v0
# CHECK: sadalp.4h	v0, v0
# CHECK: saddlp.4h	v0, v0
# CHECK: scvtf.2s	v0, v0
# CHECK: shll.8h	v0, v0, #8
# CHECK: sqabs.8b	v0, v0
# CHECK: sqneg.8b	v0, v0
# CHECK: sqxtn.8b	v0, v0
# CHECK: sqxtun.8b	v0, v0
# CHECK: suqadd.8b	v0, v0
# CHECK: uadalp.4h	v0, v0
# CHECK: uaddlp.4h	v0, v0
# CHECK: ucvtf.2s	v0, v0
# CHECK: uqxtn.8b	v0, v0
# CHECK: urecpe.2s	v0, v0
# CHECK: ursqrte.2s	v0, v0
# CHECK: usqadd.8b	v0, v0
# CHECK: xtn.8b	v0, v0

0x00 0x98 0x20 0x0e
0x00 0x98 0x20 0x4e
0x00 0x98 0x60 0x0e
0x00 0x98 0x60 0x4e
0x00 0x98 0xa0 0x0e
0x00 0x98 0xa0 0x4e
0x00 0x98 0xe0 0x4e

# CHECK: cmeq.8b	v0, v0, #0
# CHECK: cmeq.16b	v0, v0, #0
# CHECK: cmeq.4h	v0, v0, #0
# CHECK: cmeq.8h	v0, v0, #0
# CHECK: cmeq.2s	v0, v0, #0
# CHECK: cmeq.4s	v0, v0, #0
# CHECK: cmeq.2d	v0, v0, #0

0x00 0x88 0x20 0x2e
0x00 0x88 0x20 0x0e
0x00 0x98 0x20 0x2e
0x00 0xa8 0x20 0x0e
0x00 0xd8 0xa0 0x0e
0x00 0xc8 0xa0 0x2e
0x00 0xc8 0xa0 0x0e
0x00 0xd8 0xa0 0x2e
0x00 0xe8 0xa0 0x0e

# CHECK: cmge.8b	v0, v0, #0
# CHECK: cmgt.8b	v0, v0, #0
# CHECK: cmle.8b	v0, v0, #0
# CHECK: cmlt.8b	v0, v0, #0
# CHECK: fcmeq.2s	v0, v0, #0
# CHECK: fcmge.2s	v0, v0, #0
# CHECK: fcmgt.2s	v0, v0, #0
# CHECK: fcmle.2s	v0, v0, #0
# CHECK: fcmlt.2s	v0, v0, #0

0x00 0x78 0x21 0x0e
0x00 0x78 0x21 0x4e
0x00 0x78 0x61 0x0e
0x00 0x78 0x61 0x4e
0x00 0x68 0x21 0x0e
0x00 0x68 0x21 0x4e
0x00 0x68 0x61 0x0e
0x00 0x68 0x61 0x4e
0x00 0x68 0x61 0x2e
0x00 0x68 0x61 0x6e

# CHECK: fcvtl	v0.4s, v0.4h
# CHECK: fcvtl2	v0.4s, v0.8h
# CHECK: fcvtl	v0.2d, v0.2s
# CHECK: fcvtl2	v0.2d, v0.4s
# CHECK: fcvtn	v0.4h, v0.4s
# CHECK: fcvtn2	v0.8h, v0.4s
# CHECK: fcvtn	v0.2s, v0.2d
# CHECK: fcvtn2	v0.4s, v0.2d
# CHECK: fcvtxn	v0.2s, v0.2d
# CHECK: fcvtxn2	v0.4s, v0.2d

#===-------------------------------------------------------------------------===
# AdvSIMD modified immediate instructions
#===-------------------------------------------------------------------------===

0x20 0x14 0x00 0x2f
0x20 0x34 0x00 0x2f
0x20 0x54 0x00 0x2f
0x20 0x74 0x00 0x2f

# CHECK: bic.2s v0, #0x1
# CHECK: bic.2s v0, #0x1, lsl #8
# CHECK: bic.2s v0, #0x1, lsl #16
# CHECK: bic.2s v0, #0x1, lsl #24

0x20 0x94 0x00 0x2f
0x20 0x94 0x00 0x2f
0x20 0xb4 0x00 0x2f

# CHECK: bic.4h v0, #0x1
# CHECK: bic.4h v0, #0x1
# FIXME: bic.4h v0, #0x1, lsl #8
#    'bic.4h' should be selected over "fcvtnu.2s v0, v1, #0"

0x20 0x14 0x00 0x6f
0x20 0x34 0x00 0x6f
0x20 0x54 0x00 0x6f
0x20 0x74 0x00 0x6f

# CHECK: bic.4s v0, #0x1
# CHECK: bic.4s v0, #0x1, lsl #8
# CHECK: bic.4s v0, #0x1, lsl #16
# CHECK: bic.4s v0, #0x1, lsl #24

0x20 0x94 0x00 0x6f
0x20 0xb4 0x00 0x6f

# CHECK: bic.8h v0, #0x1
# FIXME: bic.8h v0, #0x1, lsl #8
#    "bic.8h" should be selected over "fcvtnu.4s v0, v1, #0"

0x00 0xf4 0x02 0x6f

# CHECK: fmov.2d v0, #0.12500000

0x00 0xf4 0x02 0x0f
0x00 0xf4 0x02 0x4f

# CHECK: fmov.2s v0, #0.12500000
# CHECK: fmov.4s v0, #0.12500000

0x20 0x14 0x00 0x0f
0x20 0x34 0x00 0x0f
0x20 0x54 0x00 0x0f
0x20 0x74 0x00 0x0f

# CHECK: orr.2s v0, #0x1
# CHECK: orr.2s v0, #0x1, lsl #8
# CHECK: orr.2s v0, #0x1, lsl #16
# CHECK: orr.2s v0, #0x1, lsl #24

0x20 0x94 0x00 0x0f
0x20 0xb4 0x00 0x0f

# CHECK: orr.4h v0, #0x1
# FIXME: orr.4h v0, #0x1, lsl #8
#    'orr.4h' should be selected over "fcvtns.2s v0, v1, #0"

0x20 0x14 0x00 0x4f
0x20 0x34 0x00 0x4f
0x20 0x54 0x00 0x4f
0x20 0x74 0x00 0x4f

# CHECK: orr.4s v0, #0x1
# CHECK: orr.4s v0, #0x1, lsl #8
# CHECK: orr.4s v0, #0x1, lsl #16
# CHECK: orr.4s v0, #0x1, lsl #24

0x20 0x94 0x00 0x4f
0x20 0xb4 0x00 0x4f

# CHECK: orr.8h v0, #0x1
# CHECK: orr.8h v0, #0x1, lsl #8

0x21 0x70 0x40 0x0c
0x42 0xa0 0x40 0x4c
0x64 0x64 0x40 0x0c
0x87 0x24 0x40 0x4c
0x0c 0xa8 0x40 0x0c
0x0a 0x68 0x40 0x4c
0x2d 0xac 0x40 0x0c
0x4f 0x7c 0x40 0x4c
0xe0 0x03 0x40 0x0d

# CHECK: ld1.8b { v1 }, [x1]
# CHECK: ld1.16b { v2, v3 }, [x2]
# CHECK: ld1.4h { v4, v5, v6 }, [x3]
# CHECK: ld1.8h { v7, v8, v9, v10 }, [x4]
# CHECK: ld1.2s { v12, v13 }, [x0]
# CHECK: ld1.4s { v10, v11, v12 }, [x0]
# CHECK: ld1.1d { v13, v14 }, [x1]
# CHECK: ld1.2d	{ v15 }, [x2]
# CHECK: ld1.b	{ v0 }[0], [sp]

0x41 0x70 0xdf 0x0c
0x41 0xa0 0xdf 0x0c
0x41 0x60 0xdf 0x0c
0x41 0x20 0xdf 0x0c
0x42 0x70 0xdf 0x4c
0x42 0xa0 0xdf 0x4c
0x42 0x60 0xdf 0x4c
0x42 0x20 0xdf 0x4c
0x64 0x74 0xdf 0x0c
0x64 0xa4 0xdf 0x0c
0x64 0x64 0xdf 0x0c
0x64 0x24 0xdf 0x0c
0x87 0x74 0xdf 0x4c
0x87 0xa4 0xdf 0x4c
0x87 0x64 0xdf 0x4c
0x87 0x24 0xdf 0x4c
0x0c 0x78 0xdf 0x0c
0x0c 0xa8 0xdf 0x0c
0x0c 0x68 0xdf 0x0c
0x0c 0x28 0xdf 0x0c
0x0a 0x78 0xdf 0x4c
0x0a 0xa8 0xdf 0x4c
0x0a 0x68 0xdf 0x4c
0x0a 0x28 0xdf 0x4c
0x2d 0x7c 0xdf 0x0c
0x2d 0xac 0xdf 0x0c
0x2d 0x6c 0xdf 0x0c
0x2d 0x2c 0xdf 0x0c
0x4f 0x7c 0xdf 0x4c
0x4f 0xac 0xdf 0x4c
0x4f 0x6c 0xdf 0x4c
0x4f 0x2c 0xdf 0x4c

# CHECK: ld1.8b { v1 }, [x2], #8
# CHECK: ld1.8b { v1, v2 }, [x2], #16
# CHECK: ld1.8b { v1, v2, v3 }, [x2], #24
# CHECK: ld1.8b { v1, v2, v3, v4 }, [x2], #32
# CHECK: ld1.16b { v2 }, [x2], #16
# CHECK: ld1.16b { v2, v3 }, [x2], #32
# CHECK: ld1.16b { v2, v3, v4 }, [x2], #48
# CHECK: ld1.16b { v2, v3, v4, v5 }, [x2], #64
# CHECK: ld1.4h { v4 }, [x3], #8
# CHECK: ld1.4h { v4, v5 }, [x3], #16
# CHECK: ld1.4h { v4, v5, v6 }, [x3], #24
# CHECK: ld1.4h { v4, v5, v6, v7 }, [x3], #32
# CHECK: ld1.8h { v7 }, [x4], #16
# CHECK: ld1.8h { v7, v8 }, [x4], #32
# CHECK: ld1.8h { v7, v8, v9 }, [x4], #48
# CHECK: ld1.8h { v7, v8, v9, v10 }, [x4], #64
# CHECK: ld1.2s { v12 }, [x0], #8
# CHECK: ld1.2s { v12, v13 }, [x0], #16
# CHECK: ld1.2s { v12, v13, v14 }, [x0], #24
# CHECK: ld1.2s { v12, v13, v14, v15 }, [x0], #32
# CHECK: ld1.4s { v10 }, [x0], #16
# CHECK: ld1.4s { v10, v11 }, [x0], #32
# CHECK: ld1.4s { v10, v11, v12 }, [x0], #48
# CHECK: ld1.4s { v10, v11, v12, v13 }, [x0], #64
# CHECK: ld1.1d { v13 }, [x1], #8
# CHECK: ld1.1d { v13, v14 }, [x1], #16
# CHECK: ld1.1d { v13, v14, v15 }, [x1], #24
# CHECK: ld1.1d { v13, v14, v15, v16 }, [x1], #32
# CHECK: ld1.2d { v15 }, [x2], #16
# CHECK: ld1.2d { v15, v16 }, [x2], #32
# CHECK: ld1.2d { v15, v16, v17 }, [x2], #48
# CHECK: ld1.2d { v15, v16, v17, v18 }, [x2], #64

0x21 0x70 0x00 0x0c
0x42 0xa0 0x00 0x4c
0x64 0x64 0x00 0x0c
0x87 0x24 0x00 0x4c
0x0c 0xa8 0x00 0x0c
0x0a 0x68 0x00 0x4c
0x2d 0xac 0x00 0x0c
0x4f 0x7c 0x00 0x4c

# CHECK: st1.8b { v1 }, [x1]
# CHECK: st1.16b { v2, v3 }, [x2]
# CHECK: st1.4h { v4, v5, v6 }, [x3]
# CHECK: st1.8h { v7, v8, v9, v10 }, [x4]
# CHECK: st1.2s { v12, v13 }, [x0]
# CHECK: st1.4s { v10, v11, v12 }, [x0]
# CHECK: st1.1d { v13, v14 }, [x1]
# CHECK: st1.2d	{ v15 }, [x2]

0x61 0x08 0x40 0x0d
0x82 0x84 0x40 0x4d
0xa3 0x58 0x40 0x0d
0xc4 0x80 0x40 0x4d

# CHECK: ld1.b { v1 }[2], [x3]
# CHECK: ld1.d { v2 }[1], [x4]
# CHECK: ld1.h { v3 }[3], [x5]
# CHECK: ld1.s { v4 }[2], [x6]

0x61 0x08 0xdf 0x0d
0x82 0x84 0xdf 0x4d
0xa3 0x58 0xdf 0x0d
0xc4 0x80 0xdf 0x4d

# CHECK: ld1.b { v1 }[2], [x3], #1
# CHECK: ld1.d { v2 }[1], [x4], #8
# CHECK: ld1.h { v3 }[3], [x5], #2
# CHECK: ld1.s { v4 }[2], [x6], #4

0x61 0x08 0x00 0x0d
0x82 0x84 0x00 0x4d
0xa3 0x58 0x00 0x0d
0xc4 0x80 0x00 0x4d

# CHECK: st1.b { v1 }[2], [x3]
# CHECK: st1.d { v2 }[1], [x4]
# CHECK: st1.h { v3 }[3], [x5]
# CHECK: st1.s { v4 }[2], [x6]

0x61 0x08 0x9f 0x0d
0x82 0x84 0x9f 0x4d
0xa3 0x58 0x9f 0x0d
0xc4 0x80 0x9f 0x4d

# CHECK: st1.b { v1 }[2], [x3], #1
# CHECK: st1.d { v2 }[1], [x4], #8
# CHECK: st1.h { v3 }[3], [x5], #2
# CHECK: st1.s { v4 }[2], [x6], #4

0x61 0x08 0xc4 0x0d
0x82 0x84 0xc5 0x4d
0xa3 0x58 0xc6 0x0d
0xc4 0x80 0xc7 0x4d

# CHECK: ld1.b { v1 }[2], [x3], x4
# CHECK: ld1.d { v2 }[1], [x4], x5
# CHECK: ld1.h { v3 }[3], [x5], x6
# CHECK: ld1.s { v4 }[2], [x6], x7

0x61 0x08 0x84 0x0d
0x82 0x84 0x85 0x4d
0xa3 0x58 0x86 0x0d
0xc4 0x80 0x87 0x4d

# CHECK: st1.b { v1 }[2], [x3], x4
# CHECK: st1.d { v2 }[1], [x4], x5
# CHECK: st1.h { v3 }[3], [x5], x6
# CHECK: st1.s { v4 }[2], [x6], x7

0x41 0x70 0xc3 0x0c
0x42 0xa0 0xc4 0x4c
0x64 0x64 0xc5 0x0c
0x87 0x24 0xc6 0x4c
0x0c 0xa8 0xc7 0x0c
0x0a 0x68 0xc8 0x4c
0x2d 0xac 0xc9 0x0c
0x4f 0x7c 0xca 0x4c

# CHECK: ld1.8b { v1 }, [x2], x3
# CHECK: ld1.16b { v2, v3 }, [x2], x4
# CHECK: ld1.4h { v4, v5, v6 }, [x3], x5
# CHECK: ld1.8h { v7, v8, v9, v10 }, [x4], x6
# CHECK: ld1.2s { v12, v13 }, [x0], x7
# CHECK: ld1.4s { v10, v11, v12 }, [x0], x8
# CHECK: ld1.1d { v13, v14 }, [x1], x9
# CHECK: ld1.2d { v15 }, [x2], x10

0x41 0x70 0x83 0x0c
0x42 0xa0 0x84 0x4c
0x64 0x64 0x85 0x0c
0x87 0x24 0x86 0x4c
0x0c 0xa8 0x87 0x0c
0x0a 0x68 0x88 0x4c
0x2d 0xac 0x89 0x0c
0x4f 0x7c 0x8a 0x4c

# CHECK: st1.8b { v1 }, [x2], x3
# CHECK: st1.16b { v2, v3 }, [x2], x4
# CHECK: st1.4h { v4, v5, v6 }, [x3], x5
# CHECK: st1.8h { v7, v8, v9, v10 }, [x4], x6
# CHECK: st1.2s { v12, v13 }, [x0], x7
# CHECK: st1.4s { v10, v11, v12 }, [x0], x8
# CHECK: st1.1d { v13, v14 }, [x1], x9
# CHECK: st1.2d { v15 }, [x2], x10

0x41 0x70 0x9f 0x0c
0x41 0xa0 0x9f 0x0c
0x41 0x60 0x9f 0x0c
0x41 0x20 0x9f 0x0c
0x42 0x70 0x9f 0x4c
0x42 0xa0 0x9f 0x4c
0x42 0x60 0x9f 0x4c
0x42 0x20 0x9f 0x4c
0x64 0x74 0x9f 0x0c
0x64 0xa4 0x9f 0x0c
0x64 0x64 0x9f 0x0c
0x64 0x24 0x9f 0x0c
0x87 0x74 0x9f 0x4c
0x87 0xa4 0x9f 0x4c
0x87 0x64 0x9f 0x4c
0x87 0x24 0x9f 0x4c
0x0c 0x78 0x9f 0x0c
0x0c 0xa8 0x9f 0x0c
0x0c 0x68 0x9f 0x0c
0x0c 0x28 0x9f 0x0c
0x0a 0x78 0x9f 0x4c
0x0a 0xa8 0x9f 0x4c
0x0a 0x68 0x9f 0x4c
0x0a 0x28 0x9f 0x4c
0x2d 0x7c 0x9f 0x0c
0x2d 0xac 0x9f 0x0c
0x2d 0x6c 0x9f 0x0c
0x2d 0x2c 0x9f 0x0c
0x4f 0x7c 0x9f 0x4c
0x4f 0xac 0x9f 0x4c
0x4f 0x6c 0x9f 0x4c
0x4f 0x2c 0x9f 0x4c

# CHECK: st1.8b { v1 }, [x2], #8
# CHECK: st1.8b { v1, v2 }, [x2], #16
# CHECK: st1.8b { v1, v2, v3 }, [x2], #24
# CHECK: st1.8b { v1, v2, v3, v4 }, [x2], #32
# CHECK: st1.16b { v2 }, [x2], #16
# CHECK: st1.16b { v2, v3 }, [x2], #32
# CHECK: st1.16b { v2, v3, v4 }, [x2], #48
# CHECK: st1.16b { v2, v3, v4, v5 }, [x2], #64
# CHECK: st1.4h { v4 }, [x3], #8
# CHECK: st1.4h { v4, v5 }, [x3], #16
# CHECK: st1.4h { v4, v5, v6 }, [x3], #24
# CHECK: st1.4h { v4, v5, v6, v7 }, [x3], #32
# CHECK: st1.8h { v7 }, [x4], #16
# CHECK: st1.8h { v7, v8 }, [x4], #32
# CHECK: st1.8h { v7, v8, v9 }, [x4], #48
# CHECK: st1.8h { v7, v8, v9, v10 }, [x4], #64
# CHECK: st1.2s { v12 }, [x0], #8
# CHECK: st1.2s { v12, v13 }, [x0], #16
# CHECK: st1.2s { v12, v13, v14 }, [x0], #24
# CHECK: st1.2s { v12, v13, v14, v15 }, [x0], #32
# CHECK: st1.4s { v10 }, [x0], #16
# CHECK: st1.4s { v10, v11 }, [x0], #32
# CHECK: st1.4s { v10, v11, v12 }, [x0], #48
# CHECK: st1.4s { v10, v11, v12, v13 }, [x0], #64
# CHECK: st1.1d { v13 }, [x1], #8
# CHECK: st1.1d { v13, v14 }, [x1], #16
# CHECK: st1.1d { v13, v14, v15 }, [x1], #24
# CHECK: st1.1d { v13, v14, v15, v16 }, [x1], #32
# CHECK: st1.2d { v15 }, [x2], #16
# CHECK: st1.2d { v15, v16 }, [x2], #32
# CHECK: st1.2d { v15, v16, v17 }, [x2], #48
# CHECK: st1.2d { v15, v16, v17, v18 }, [x2], #64

0x21 0xc0 0x40 0x0d
0x21 0xc0 0xc2 0x0d
0x64 0xc4 0x40 0x0d
0x64 0xc4 0xc5 0x0d
0xa9 0xc8 0x40 0x0d
0xa9 0xc8 0xc6 0x0d
0xec 0xcc 0x40 0x0d
0xec 0xcc 0xc8 0x0d

# CHECK: ld1r.8b { v1 }, [x1]
# CHECK: ld1r.8b { v1 }, [x1], x2
# CHECK: ld1r.4h { v4 }, [x3]
# CHECK: ld1r.4h { v4 }, [x3], x5
# CHECK: ld1r.2s { v9 }, [x5]
# CHECK: ld1r.2s { v9 }, [x5], x6
# CHECK: ld1r.1d { v12 }, [x7]
# CHECK: ld1r.1d { v12 }, [x7], x8

0x21 0xc0 0xdf 0x0d
0x21 0xc4 0xdf 0x0d
0x21 0xc8 0xdf 0x0d
0x21 0xcc 0xdf 0x0d

# CHECK: ld1r.8b { v1 }, [x1], #1
# CHECK: ld1r.4h { v1 }, [x1], #2
# CHECK: ld1r.2s { v1 }, [x1], #4
# CHECK: ld1r.1d { v1 }, [x1], #8

0x45 0x80 0x40 0x4c
0x0a 0x88 0x40 0x0c

# CHECK: ld2.16b { v5, v6 }, [x2]
# CHECK: ld2.2s { v10, v11 }, [x0]

0x45 0x80 0x00 0x4c
0x0a 0x88 0x00 0x0c

# CHECK: st2.16b { v5, v6 }, [x2]
# CHECK: st2.2s { v10, v11 }, [x0]

0x61 0x08 0x20 0x0d
0x82 0x84 0x20 0x4d
0xc3 0x50 0x20 0x0d
0xe4 0x90 0x20 0x4d

# CHECK: st2.b { v1, v2 }[2], [x3]
# CHECK: st2.d { v2, v3 }[1], [x4]
# CHECK: st2.h { v3, v4 }[2], [x6]
# CHECK: st2.s { v4, v5 }[3], [x7]

0x61 0x08 0xbf 0x0d
0x82 0x84 0xbf 0x4d
0xa3 0x58 0xbf 0x0d
0xc4 0x80 0xbf 0x4d

# CHECK: st2.b { v1, v2 }[2], [x3], #2
# CHECK: st2.d { v2, v3 }[1], [x4], #16
# CHECK: st2.h { v3, v4 }[3], [x5], #4
# CHECK: st2.s { v4, v5 }[2], [x6], #8

0x61 0x08 0x60 0x0d
0x82 0x84 0x60 0x4d
0xc3 0x50 0x60 0x0d
0xe4 0x90 0x60 0x4d

# CHECK: ld2.b { v1, v2 }[2], [x3]
# CHECK: ld2.d { v2, v3 }[1], [x4]
# CHECK: ld2.h { v3, v4 }[2], [x6]
# CHECK: ld2.s { v4, v5 }[3], [x7]

0x61 0x08 0xff 0x0d
0x82 0x84 0xff 0x4d
0xa3 0x58 0xff 0x0d
0xc4 0x80 0xff 0x4d

# CHECK: ld2.b { v1, v2 }[2], [x3], #2
# CHECK: ld2.d { v2, v3 }[1], [x4], #16
# CHECK: ld2.h { v3, v4 }[3], [x5], #4
# CHECK: ld2.s { v4, v5 }[2], [x6], #8

0x61 0x08 0xe4 0x0d
0x82 0x84 0xe6 0x4d
0xa3 0x58 0xe8 0x0d
0xc4 0x80 0xea 0x4d

# CHECK: ld2.b { v1, v2 }[2], [x3], x4
# CHECK: ld2.d { v2, v3 }[1], [x4], x6
# CHECK: ld2.h { v3, v4 }[3], [x5], x8
# CHECK: ld2.s { v4, v5 }[2], [x6], x10

0x61 0x08 0xa4 0x0d
0x82 0x84 0xa6 0x4d
0xa3 0x58 0xa8 0x0d
0xc4 0x80 0xaa 0x4d

# CHECK: st2.b { v1, v2 }[2], [x3], x4
# CHECK: st2.d { v2, v3 }[1], [x4], x6
# CHECK: st2.h { v3, v4 }[3], [x5], x8
# CHECK: st2.s { v4, v5 }[2], [x6], x10

0x64 0x84 0xc5 0x0c
0x0c 0x88 0xc7 0x0c

# CHECK: ld2.4h { v4, v5 }, [x3], x5
# CHECK: ld2.2s { v12, v13 }, [x0], x7

0x00 0x80 0xdf 0x0c
0x00 0x80 0xdf 0x4c
0x00 0x84 0xdf 0x0c
0x00 0x84 0xdf 0x4c
0x00 0x88 0xdf 0x0c
0x00 0x88 0xdf 0x4c
0x00 0x8c 0xdf 0x4c

# CHECK: ld2.8b { v0, v1 }, [x0], #16
# CHECK: ld2.16b { v0, v1 }, [x0], #32
# CHECK: ld2.4h { v0, v1 }, [x0], #16
# CHECK: ld2.8h { v0, v1 }, [x0], #32
# CHECK: ld2.2s { v0, v1 }, [x0], #16
# CHECK: ld2.4s { v0, v1 }, [x0], #32
# CHECK: ld2.2d { v0, v1 }, [x0], #32

0x64 0x84 0x85 0x0c
0x0c 0x88 0x87 0x0c

# CHECK: st2.4h { v4, v5 }, [x3], x5
# CHECK: st2.2s { v12, v13 }, [x0], x7

0x00 0x80 0x9f 0x0c
0x00 0x80 0x9f 0x4c
0x00 0x84 0x9f 0x0c
0x00 0x84 0x9f 0x4c
0x00 0x88 0x9f 0x0c
0x00 0x88 0x9f 0x4c
0x00 0x8c 0x9f 0x4c

# CHECK: st2.8b { v0, v1 }, [x0], #16
# CHECK: st2.16b { v0, v1 }, [x0], #32
# CHECK: st2.4h { v0, v1 }, [x0], #16
# CHECK: st2.8h { v0, v1 }, [x0], #32
# CHECK: st2.2s { v0, v1 }, [x0], #16
# CHECK: st2.4s { v0, v1 }, [x0], #32
# CHECK: st2.2d { v0, v1 }, [x0], #32

0x21 0xc0 0x60 0x0d
0x21 0xc0 0xe2 0x0d
0x21 0xc0 0x60 0x4d
0x21 0xc0 0xe2 0x4d
0x21 0xc4 0x60 0x0d
0x21 0xc4 0xe2 0x0d
0x21 0xc4 0x60 0x4d
0x21 0xc4 0xe2 0x4d
0x21 0xc8 0x60 0x0d
0x21 0xc8 0xe2 0x0d
0x21 0xcc 0x60 0x4d
0x21 0xcc 0xe2 0x4d
0x21 0xcc 0x60 0x0d
0x21 0xcc 0xe2 0x0d

# CHECK: ld2r.8b { v1, v2 }, [x1]
# CHECK: ld2r.8b { v1, v2 }, [x1], x2
# CHECK: ld2r.16b { v1, v2 }, [x1]
# CHECK: ld2r.16b { v1, v2 }, [x1], x2
# CHECK: ld2r.4h { v1, v2 }, [x1]
# CHECK: ld2r.4h { v1, v2 }, [x1], x2
# CHECK: ld2r.8h { v1, v2 }, [x1]
# CHECK: ld2r.8h { v1, v2 }, [x1], x2
# CHECK: ld2r.2s { v1, v2 }, [x1]
# CHECK: ld2r.2s { v1, v2 }, [x1], x2
# CHECK: ld2r.2d { v1, v2 }, [x1]
# CHECK: ld2r.2d { v1, v2 }, [x1], x2
# CHECK: ld2r.1d { v1, v2 }, [x1]
# CHECK: ld2r.1d { v1, v2 }, [x1], x2

0x21 0xc0 0xff 0x0d
0x21 0xc0 0xff 0x4d
0x21 0xc4 0xff 0x0d
0x21 0xc4 0xff 0x4d
0x21 0xc8 0xff 0x0d
0x21 0xcc 0xff 0x4d
0x21 0xcc 0xff 0x0d

# CHECK: ld2r.8b { v1, v2 }, [x1], #2
# CHECK: ld2r.16b { v1, v2 }, [x1], #2
# CHECK: ld2r.4h { v1, v2 }, [x1], #4
# CHECK: ld2r.8h { v1, v2 }, [x1], #4
# CHECK: ld2r.2s { v1, v2 }, [x1], #8
# CHECK: ld2r.2d { v1, v2 }, [x1], #16
# CHECK: ld2r.1d { v1, v2 }, [x1], #16

0x21 0x40 0x40 0x0c
0x45 0x40 0x40 0x4c
0x0a 0x48 0x40 0x0c

# CHECK: ld3.8b { v1, v2, v3 }, [x1]
# CHECK: ld3.16b { v5, v6, v7 }, [x2]
# CHECK: ld3.2s { v10, v11, v12 }, [x0]

0x21 0x40 0x00 0x0c
0x45 0x40 0x00 0x4c
0x0a 0x48 0x00 0x0c

# CHECK: st3.8b { v1, v2, v3 }, [x1]
# CHECK: st3.16b { v5, v6, v7 }, [x2]
# CHECK: st3.2s { v10, v11, v12 }, [x0]

0x61 0x28 0xc4 0x0d
0x82 0xa4 0xc5 0x4d
0xa3 0x78 0xc6 0x0d
0xc4 0xa0 0xc7 0x4d

# CHECK: ld3.b { v1, v2, v3 }[2], [x3], x4
# CHECK: ld3.d { v2, v3, v4 }[1], [x4], x5
# CHECK: ld3.h { v3, v4, v5 }[3], [x5], x6
# CHECK: ld3.s { v4, v5, v6 }[2], [x6], x7

0x61 0x28 0x84 0x0d
0x82 0xa4 0x85 0x4d
0xa3 0x78 0x86 0x0d
0xc4 0xa0 0x87 0x4d

# CHECK: st3.b { v1, v2, v3 }[2], [x3], x4
# CHECK: st3.d { v2, v3, v4 }[1], [x4], x5
# CHECK: st3.h { v3, v4, v5 }[3], [x5], x6
# CHECK: st3.s { v4, v5, v6 }[2], [x6], x7

0x61 0x28 0x9f 0x0d
0x82 0xa4 0x9f 0x4d
0xa3 0x78 0x9f 0x0d
0xc4 0xa0 0x9f 0x4d

# CHECK: st3.b { v1, v2, v3 }[2], [x3], #3
# CHECK: st3.d { v2, v3, v4 }[1], [x4], #24
# CHECK: st3.h { v3, v4, v5 }[3], [x5], #6
# CHECK: st3.s { v4, v5, v6 }[2], [x6], #12

0x41 0x40 0xc3 0x0c
0x42 0x40 0xc4 0x4c
0x64 0x44 0xc5 0x0c
0x87 0x44 0xc6 0x4c
0x0c 0x48 0xc7 0x0c
0x0a 0x48 0xc8 0x4c
0x4f 0x4c 0xca 0x4c

# CHECK: ld3.8b { v1, v2, v3 }, [x2], x3
# CHECK: ld3.16b { v2, v3, v4 }, [x2], x4
# CHECK: ld3.4h { v4, v5, v6 }, [x3], x5
# CHECK: ld3.8h { v7, v8, v9 }, [x4], x6
# CHECK: ld3.2s { v12, v13, v14 }, [x0], x7
# CHECK: ld3.4s { v10, v11, v12 }, [x0], x8
# CHECK: ld3.2d { v15, v16, v17 }, [x2], x10

0x00 0x40 0xdf 0x0c
0x00 0x40 0xdf 0x4c
0x00 0x44 0xdf 0x0c
0x00 0x44 0xdf 0x4c
0x00 0x48 0xdf 0x0c
0x00 0x48 0xdf 0x4c
0x00 0x4c 0xdf 0x4c

# CHECK: ld3.8b { v0, v1, v2 }, [x0], #24
# CHECK: ld3.16b { v0, v1, v2 }, [x0], #48
# CHECK: ld3.4h { v0, v1, v2 }, [x0], #24
# CHECK: ld3.8h { v0, v1, v2 }, [x0], #48
# CHECK: ld3.2s { v0, v1, v2 }, [x0], #24
# CHECK: ld3.4s { v0, v1, v2 }, [x0], #48
# CHECK: ld3.2d { v0, v1, v2 }, [x0], #48

0x41 0x40 0x83 0x0c
0x42 0x40 0x84 0x4c
0x64 0x44 0x85 0x0c
0x87 0x44 0x86 0x4c
0x0c 0x48 0x87 0x0c
0x0a 0x48 0x88 0x4c
0x4f 0x4c 0x8a 0x4c

# CHECK: st3.8b { v1, v2, v3 }, [x2], x3
# CHECK: st3.16b { v2, v3, v4 }, [x2], x4
# CHECK: st3.4h { v4, v5, v6 }, [x3], x5
# CHECK: st3.8h { v7, v8, v9 }, [x4], x6
# CHECK: st3.2s { v12, v13, v14 }, [x0], x7
# CHECK: st3.4s { v10, v11, v12 }, [x0], x8
# CHECK: st3.2d { v15, v16, v17 }, [x2], x10

0x00 0x40 0x9f 0x0c
0x00 0x40 0x9f 0x4c
0x00 0x44 0x9f 0x0c
0x00 0x44 0x9f 0x4c
0x00 0x48 0x9f 0x0c
0x00 0x48 0x9f 0x4c
0x00 0x4c 0x9f 0x4c

# CHECK: st3.8b { v0, v1, v2 }, [x0], #24
# CHECK: st3.16b { v0, v1, v2 }, [x0], #48
# CHECK: st3.4h { v0, v1, v2 }, [x0], #24
# CHECK: st3.8h { v0, v1, v2 }, [x0], #48
# CHECK: st3.2s { v0, v1, v2 }, [x0], #24
# CHECK: st3.4s { v0, v1, v2 }, [x0], #48
# CHECK: st3.2d { v0, v1, v2 }, [x0], #48

0x61 0x28 0x40 0x0d
0x82 0xa4 0x40 0x4d
0xc3 0x70 0x40 0x0d
0xe4 0xb0 0x40 0x4d

# CHECK: ld3.b { v1, v2, v3 }[2], [x3]
# CHECK: ld3.d { v2, v3, v4 }[1], [x4]
# CHECK: ld3.h { v3, v4, v5 }[2], [x6]
# CHECK: ld3.s { v4, v5, v6 }[3], [x7]

0x61 0x28 0xdf 0x0d
0x82 0xa4 0xdf 0x4d
0xa3 0x78 0xdf 0x0d
0xc4 0xa0 0xdf 0x4d

# CHECK: ld3.b { v1, v2, v3 }[2], [x3], #3
# CHECK: ld3.d { v2, v3, v4 }[1], [x4], #24
# CHECK: ld3.h { v3, v4, v5 }[3], [x5], #6
# CHECK: ld3.s { v4, v5, v6 }[2], [x6], #12

0x61 0x28 0x00 0x0d
0x82 0xa4 0x00 0x4d
0xc3 0x70 0x00 0x0d
0xe4 0xb0 0x00 0x4d

# CHECK: st3.b { v1, v2, v3 }[2], [x3]
# CHECK: st3.d { v2, v3, v4 }[1], [x4]
# CHECK: st3.h { v3, v4, v5 }[2], [x6]
# CHECK: st3.s { v4, v5, v6 }[3], [x7]

0x21 0xe0 0x40 0x0d
0x21 0xe0 0xc2 0x0d
0x21 0xe0 0x40 0x4d
0x21 0xe0 0xc2 0x4d
0x21 0xe4 0x40 0x0d
0x21 0xe4 0xc2 0x0d
0x21 0xe4 0x40 0x4d
0x21 0xe4 0xc2 0x4d
0x21 0xe8 0x40 0x0d
0x21 0xe8 0xc2 0x0d
0x21 0xec 0x40 0x4d
0x21 0xec 0xc2 0x4d
0x21 0xec 0x40 0x0d
0x21 0xec 0xc2 0x0d

# CHECK: ld3r.8b { v1, v2, v3 }, [x1]
# CHECK: ld3r.8b { v1, v2, v3 }, [x1], x2
# CHECK: ld3r.16b { v1, v2, v3 }, [x1]
# CHECK: ld3r.16b { v1, v2, v3 }, [x1], x2
# CHECK: ld3r.4h { v1, v2, v3 }, [x1]
# CHECK: ld3r.4h { v1, v2, v3 }, [x1], x2
# CHECK: ld3r.8h { v1, v2, v3 }, [x1]
# CHECK: ld3r.8h { v1, v2, v3 }, [x1], x2
# CHECK: ld3r.2s { v1, v2, v3 }, [x1]
# CHECK: ld3r.2s { v1, v2, v3 }, [x1], x2
# CHECK: ld3r.2d { v1, v2, v3 }, [x1]
# CHECK: ld3r.2d { v1, v2, v3 }, [x1], x2
# CHECK: ld3r.1d { v1, v2, v3 }, [x1]
# CHECK: ld3r.1d { v1, v2, v3 }, [x1], x2

0x21 0xe0 0xdf 0x0d
0x21 0xe0 0xdf 0x4d
0x21 0xe4 0xdf 0x0d
0x21 0xe4 0xdf 0x4d
0x21 0xe8 0xdf 0x0d
0x21 0xec 0xdf 0x4d
0x21 0xec 0xdf 0x0d

# CHECK: ld3r.8b	{ v1, v2, v3 }, [x1], #3
# CHECK: ld3r.16b	{ v1, v2, v3 }, [x1], #3
# CHECK: ld3r.4h	{ v1, v2, v3 }, [x1], #6
# CHECK: ld3r.8h	{ v1, v2, v3 }, [x1], #6
# CHECK: ld3r.2s	{ v1, v2, v3 }, [x1], #12
# CHECK: ld3r.2d	{ v1, v2, v3 }, [x1], #24
# CHECK: ld3r.1d	{ v1, v2, v3 }, [x1], #24

0x21 0x00 0x40 0x0c
0x45 0x00 0x40 0x4c
0x0a 0x08 0x40 0x0c

# CHECK: ld4.8b { v1, v2, v3, v4 }, [x1]
# CHECK: ld4.16b { v5, v6, v7, v8 }, [x2]
# CHECK: ld4.2s { v10, v11, v12, v13 }, [x0]

0x21 0x00 0x00 0x0c
0x45 0x00 0x00 0x4c
0x0a 0x08 0x00 0x0c

# CHECK: st4.8b { v1, v2, v3, v4 }, [x1]
# CHECK: st4.16b { v5, v6, v7, v8 }, [x2]
# CHECK: st4.2s { v10, v11, v12, v13 }, [x0]

0x61 0x28 0xe4 0x0d
0x82 0xa4 0xe5 0x4d
0xa3 0x78 0xe6 0x0d
0xc4 0xa0 0xe7 0x4d

# CHECK: ld4.b { v1, v2, v3, v4 }[2], [x3], x4
# CHECK: ld4.d { v2, v3, v4, v5 }[1], [x4], x5
# CHECK: ld4.h { v3, v4, v5, v6 }[3], [x5], x6
# CHECK: ld4.s { v4, v5, v6, v7 }[2], [x6], x7

0x61 0x28 0xff 0x0d
0x82 0xa4 0xff 0x4d
0xa3 0x78 0xff 0x0d
0xc4 0xa0 0xff 0x4d

# CHECK: ld4.b { v1, v2, v3, v4 }[2], [x3], #4
# CHECK: ld4.d { v2, v3, v4, v5 }[1], [x4], #32
# CHECK: ld4.h { v3, v4, v5, v6 }[3], [x5], #8
# CHECK: ld4.s { v4, v5, v6, v7 }[2], [x6], #16

0x61 0x28 0xa4 0x0d
0x82 0xa4 0xa5 0x4d
0xa3 0x78 0xa6 0x0d
0xc4 0xa0 0xa7 0x4d

# CHECK: st4.b { v1, v2, v3, v4 }[2], [x3], x4
# CHECK: st4.d { v2, v3, v4, v5 }[1], [x4], x5
# CHECK: st4.h { v3, v4, v5, v6 }[3], [x5], x6
# CHECK: st4.s { v4, v5, v6, v7 }[2], [x6], x7

0x61 0x28 0xbf 0x0d
0x82 0xa4 0xbf 0x4d
0xa3 0x78 0xbf 0x0d
0xc4 0xa0 0xbf 0x4d

# CHECK: st4.b { v1, v2, v3, v4 }[2], [x3], #4
# CHECK: st4.d { v2, v3, v4, v5 }[1], [x4], #32
# CHECK: st4.h { v3, v4, v5, v6 }[3], [x5], #8
# CHECK: st4.s { v4, v5, v6, v7 }[2], [x6], #16

0x41 0x00 0xc3 0x0c
0x42 0x00 0xc4 0x4c
0x64 0x04 0xc5 0x0c
0x87 0x04 0xc6 0x4c
0x0c 0x08 0xc7 0x0c
0x0a 0x08 0xc8 0x4c
0x4f 0x0c 0xca 0x4c

# CHECK: ld4.8b { v1, v2, v3, v4 }, [x2], x3
# CHECK: ld4.16b { v2, v3, v4, v5 }, [x2], x4
# CHECK: ld4.4h { v4, v5, v6, v7 }, [x3], x5
# CHECK: ld4.8h { v7, v8, v9, v10 }, [x4], x6
# CHECK: ld4.2s { v12, v13, v14, v15 }, [x0], x7
# CHECK: ld4.4s { v10, v11, v12, v13 }, [x0], x8
# CHECK: ld4.2d { v15, v16, v17, v18 }, [x2], x10

0x00 0x00 0xdf 0x0c
0x00 0x00 0xdf 0x4c
0x00 0x04 0xdf 0x0c
0x00 0x04 0xdf 0x4c
0x00 0x08 0xdf 0x0c
0x00 0x08 0xdf 0x4c
0x00 0x0c 0xdf 0x4c

# CHECK: ld4.8b { v0, v1, v2, v3 }, [x0], #32
# CHECK: ld4.16b { v0, v1, v2, v3 }, [x0], #64
# CHECK: ld4.4h { v0, v1, v2, v3 }, [x0], #32
# CHECK: ld4.8h { v0, v1, v2, v3 }, [x0], #64
# CHECK: ld4.2s { v0, v1, v2, v3 }, [x0], #32
# CHECK: ld4.4s { v0, v1, v2, v3 }, [x0], #64
# CHECK: ld4.2d { v0, v1, v2, v3 }, [x0], #64

0x00 0x00 0x9f 0x0c
0x00 0x00 0x9f 0x4c
0x00 0x04 0x9f 0x0c
0x00 0x04 0x9f 0x4c
0x00 0x08 0x9f 0x0c
0x00 0x08 0x9f 0x4c
0x00 0x0c 0x9f 0x4c

# CHECK: st4.8b { v0, v1, v2, v3 }, [x0], #32
# CHECK: st4.16b { v0, v1, v2, v3 }, [x0], #64
# CHECK: st4.4h { v0, v1, v2, v3 }, [x0], #32
# CHECK: st4.8h { v0, v1, v2, v3 }, [x0], #64
# CHECK: st4.2s { v0, v1, v2, v3 }, [x0], #32
# CHECK: st4.4s { v0, v1, v2, v3 }, [x0], #64
# CHECK: st4.2d { v0, v1, v2, v3 }, [x0], #64

0x41 0x00 0x83 0x0c
0x42 0x00 0x84 0x4c
0x64 0x04 0x85 0x0c
0x87 0x04 0x86 0x4c
0x0c 0x08 0x87 0x0c
0x0a 0x08 0x88 0x4c
0x4f 0x0c 0x8a 0x4c

# CHECK: st4.8b { v1, v2, v3, v4 }, [x2], x3
# CHECK: st4.16b { v2, v3, v4, v5 }, [x2], x4
# CHECK: st4.4h { v4, v5, v6, v7 }, [x3], x5
# CHECK: st4.8h { v7, v8, v9, v10 }, [x4], x6
# CHECK: st4.2s { v12, v13, v14, v15 }, [x0], x7
# CHECK: st4.4s { v10, v11, v12, v13 }, [x0], x8
# CHECK: st4.2d { v15, v16, v17, v18 }, [x2], x10

0x61 0x28 0x60 0x0d
0x82 0xa4 0x60 0x4d
0xc3 0x70 0x60 0x0d
0xe4 0xb0 0x60 0x4d

# CHECK: ld4.b { v1, v2, v3, v4 }[2], [x3]
# CHECK: ld4.d { v2, v3, v4, v5 }[1], [x4]
# CHECK: ld4.h { v3, v4, v5, v6 }[2], [x6]
# CHECK: ld4.s { v4, v5, v6, v7 }[3], [x7]

0x61 0x28 0x20 0x0d
0x82 0xa4 0x20 0x4d
0xc3 0x70 0x20 0x0d
0xe4 0xb0 0x20 0x4d

# CHECK: st4.b { v1, v2, v3, v4 }[2], [x3]
# CHECK: st4.d { v2, v3, v4, v5 }[1], [x4]
# CHECK: st4.h { v3, v4, v5, v6 }[2], [x6]
# CHECK: st4.s { v4, v5, v6, v7 }[3], [x7]

0x21 0xe0 0x60 0x0d
0x21 0xe0 0xe2 0x0d
0x21 0xe0 0x60 0x4d
0x21 0xe0 0xe2 0x4d
0x21 0xe4 0x60 0x0d
0x21 0xe4 0xe2 0x0d
0x21 0xe4 0x60 0x4d
0x21 0xe4 0xe2 0x4d
0x21 0xe8 0x60 0x0d
0x21 0xe8 0xe2 0x0d
0x21 0xec 0x60 0x4d
0x21 0xec 0xe2 0x4d
0x21 0xec 0x60 0x0d
0x21 0xec 0xe2 0x0d

# CHECK: ld4r.8b { v1, v2, v3, v4 }, [x1]
# CHECK: ld4r.8b { v1, v2, v3, v4 }, [x1], x2
# CHECK: ld4r.16b { v1, v2, v3, v4 }, [x1]
# CHECK: ld4r.16b { v1, v2, v3, v4 }, [x1], x2
# CHECK: ld4r.4h { v1, v2, v3, v4 }, [x1]
# CHECK: ld4r.4h { v1, v2, v3, v4 }, [x1], x2
# CHECK: ld4r.8h { v1, v2, v3, v4 }, [x1]
# CHECK: ld4r.8h { v1, v2, v3, v4 }, [x1], x2
# CHECK: ld4r.2s { v1, v2, v3, v4 }, [x1]
# CHECK: ld4r.2s { v1, v2, v3, v4 }, [x1], x2
# CHECK: ld4r.2d { v1, v2, v3, v4 }, [x1]
# CHECK: ld4r.2d { v1, v2, v3, v4 }, [x1], x2
# CHECK: ld4r.1d { v1, v2, v3, v4 }, [x1]
# CHECK: ld4r.1d { v1, v2, v3, v4 }, [x1], x2

0x21 0xe0 0xff 0x0d
0x21 0xe0 0xff 0x4d
0x21 0xe4 0xff 0x0d
0x21 0xe4 0xff 0x4d
0x21 0xe8 0xff 0x0d
0x21 0xec 0xff 0x4d
0x21 0xec 0xff 0x0d

# CHECK: ld4r.8b	{ v1, v2, v3, v4 }, [x1], #4
# CHECK: ld4r.16b	{ v1, v2, v3, v4 }, [x1], #4
# CHECK: ld4r.4h	{ v1, v2, v3, v4 }, [x1], #8
# CHECK: ld4r.8h	{ v1, v2, v3, v4 }, [x1], #8
# CHECK: ld4r.2s	{ v1, v2, v3, v4 }, [x1], #16
# CHECK: ld4r.2d	{ v1, v2, v3, v4 }, [x1], #32
# CHECK: ld4r.1d	{ v1, v2, v3, v4 }, [x1], #32

0x20 0xe4 0x00 0x2f
0x20 0xe4 0x00 0x6f
0x20 0xe4 0x00 0x0f
0x20 0xe4 0x00 0x4f

# CHECK: movi     d0, #0x000000000000ff
# CHECK: movi.2d  v0, #0x000000000000ff
# CHECK: movi.8b  v0, #0x1
# CHECK: movi.16b v0, #0x1

0x20 0x04 0x00 0x0f
0x20 0x24 0x00 0x0f
0x20 0x44 0x00 0x0f
0x20 0x64 0x00 0x0f

# CHECK: movi.2s v0, #0x1
# CHECK: movi.2s v0, #0x1, lsl #8
# CHECK: movi.2s v0, #0x1, lsl #16
# CHECK: movi.2s v0, #0x1, lsl #24

0x20 0x04 0x00 0x4f
0x20 0x24 0x00 0x4f
0x20 0x44 0x00 0x4f
0x20 0x64 0x00 0x4f

# CHECK: movi.4s v0, #0x1
# CHECK: movi.4s v0, #0x1, lsl #8
# CHECK: movi.4s v0, #0x1, lsl #16
# CHECK: movi.4s v0, #0x1, lsl #24

0x20 0x84 0x00 0x0f
0x20 0xa4 0x00 0x0f

# CHECK: movi.4h v0, #0x1
# CHECK: movi.4h v0, #0x1, lsl #8

0x20 0x84 0x00 0x4f
0x20 0xa4 0x00 0x4f

# CHECK: movi.8h v0, #0x1
# CHECK: movi.8h v0, #0x1, lsl #8

0x20 0x04 0x00 0x2f
0x20 0x24 0x00 0x2f
0x20 0x44 0x00 0x2f
0x20 0x64 0x00 0x2f

# CHECK: mvni.2s v0, #0x1
# CHECK: mvni.2s v0, #0x1, lsl #8
# CHECK: mvni.2s v0, #0x1, lsl #16
# CHECK: mvni.2s v0, #0x1, lsl #24

0x20 0x04 0x00 0x6f
0x20 0x24 0x00 0x6f
0x20 0x44 0x00 0x6f
0x20 0x64 0x00 0x6f

# CHECK: mvni.4s v0, #0x1
# CHECK: mvni.4s v0, #0x1, lsl #8
# CHECK: mvni.4s v0, #0x1, lsl #16
# CHECK: mvni.4s v0, #0x1, lsl #24

0x20 0x84 0x00 0x2f
0x20 0xa4 0x00 0x2f

# CHECK: mvni.4h v0, #0x1
# CHECK: mvni.4h v0, #0x1, lsl #8

0x20 0x84 0x00 0x6f
0x20 0xa4 0x00 0x6f

# CHECK: mvni.8h v0, #0x1
# CHECK: mvni.8h v0, #0x1, lsl #8

0x20 0xc4 0x00 0x2f
0x20 0xd4 0x00 0x2f
0x20 0xc4 0x00 0x6f
0x20 0xd4 0x00 0x6f

# CHECK: mvni.2s v0, #0x1, msl #8
# CHECK: mvni.2s v0, #0x1, msl #16
# CHECK: mvni.4s v0, #0x1, msl #8
# CHECK: mvni.4s v0, #0x1, msl #16

0x00 0x88 0x21 0x2e
0x00 0x98 0x21 0x2e
0x00 0x98 0xa1 0x2e
0x00 0x98 0x21 0x0e
0x00 0x88 0x21 0x0e
0x00 0x88 0xa1 0x0e
0x00 0x98 0xa1 0x0e

# CHECK: frinta.2s	v0, v0
# CHECK: frintx.2s	v0, v0
# CHECK: frinti.2s	v0, v0
# CHECK: frintm.2s	v0, v0
# CHECK: frintn.2s	v0, v0
# CHECK: frintp.2s	v0, v0
# CHECK: frintz.2s	v0, v0

#===-------------------------------------------------------------------------===
# AdvSIMD scalar x index instructions
#===-------------------------------------------------------------------------===

0x00 0x18 0xa0 0x5f
0x00 0x18 0xc0 0x5f
0x00 0x58 0xa0 0x5f
0x00 0x58 0xc0 0x5f
0x00 0x98 0xa0 0x7f
0x00 0x98 0xc0 0x7f
0x00 0x98 0xa0 0x5f
0x00 0x98 0xc0 0x5f
0x00 0x38 0x70 0x5f
0x00 0x38 0xa0 0x5f
0x00 0x78 0x70 0x5f
0x00 0xc8 0x70 0x5f
0x00 0xc8 0xa0 0x5f
0x00 0xb8 0x70 0x5f
0x00 0xb8 0xa0 0x5f
0x00 0xd8 0x70 0x5f
0x00 0xd8 0xa0 0x5f

# CHECK: fmla.s	s0, s0, v0[3]
# CHECK: fmla.d	d0, d0, v0[1]
# CHECK: fmls.s	s0, s0, v0[3]
# CHECK: fmls.d	d0, d0, v0[1]
# CHECK: fmulx.s	s0, s0, v0[3]
# CHECK: fmulx.d	d0, d0, v0[1]
# CHECK: fmul.s	s0, s0, v0[3]
# CHECK: fmul.d	d0, d0, v0[1]
# CHECK: sqdmlal.h	s0, h0, v0[7]
# CHECK: sqdmlal.s	d0, s0, v0[3]
# CHECK: sqdmlsl.h	s0, h0, v0[7]
# CHECK: sqdmulh.h	h0, h0, v0[7]
# CHECK: sqdmulh.s	s0, s0, v0[3]
# CHECK: sqdmull.h	s0, h0, v0[7]
# CHECK: sqdmull.s	d0, s0, v0[3]
# CHECK: sqrdmulh.h	h0, h0, v0[7]
# CHECK: sqrdmulh.s	s0, s0, v0[3]

#===-------------------------------------------------------------------------===
# AdvSIMD vector x index instructions
#===-------------------------------------------------------------------------===

  0x00 0x10 0x80 0x0f
  0x00 0x10 0xa0 0x4f
  0x00 0x18 0xc0 0x4f
  0x00 0x50 0x80 0x0f
  0x00 0x50 0xa0 0x4f
  0x00 0x58 0xc0 0x4f
  0x00 0x90 0x80 0x2f
  0x00 0x90 0xa0 0x6f
  0x00 0x98 0xc0 0x6f
  0x00 0x90 0x80 0x0f
  0x00 0x90 0xa0 0x4f
  0x00 0x98 0xc0 0x4f
  0x00 0x00 0x40 0x2f
  0x00 0x00 0x50 0x6f
  0x00 0x08 0x80 0x2f
  0x00 0x08 0xa0 0x6f
  0x00 0x40 0x40 0x2f
  0x00 0x40 0x50 0x6f
  0x00 0x48 0x80 0x2f
  0x00 0x48 0xa0 0x6f
  0x00 0x80 0x40 0x0f
  0x00 0x80 0x50 0x4f
  0x00 0x88 0x80 0x0f
  0x00 0x88 0xa0 0x4f
  0x00 0x20 0x40 0x0f
  0x00 0x20 0x50 0x4f
  0x00 0x28 0x80 0x0f
  0x00 0x28 0xa0 0x4f
  0x00 0x60 0x40 0x0f
  0x00 0x60 0x50 0x4f
  0x00 0x68 0x80 0x0f
  0x00 0x68 0xa0 0x4f
  0x00 0xa0 0x40 0x0f
  0x00 0xa0 0x50 0x4f
  0x00 0xa8 0x80 0x0f
  0x00 0xa8 0xa0 0x4f
  0x00 0x30 0x40 0x0f
  0x00 0x30 0x50 0x4f
  0x00 0x38 0x80 0x0f
  0x00 0x38 0xa0 0x4f
  0x00 0x70 0x40 0x0f
  0x00 0x70 0x50 0x4f
  0x00 0x78 0x80 0x0f
  0x00 0x78 0xa0 0x4f
  0x00 0xc0 0x40 0x0f
  0x00 0xc0 0x50 0x4f
  0x00 0xc8 0x80 0x0f
  0x00 0xc8 0xa0 0x4f
  0x00 0xb0 0x40 0x0f
  0x00 0xb0 0x50 0x4f
  0x00 0xb8 0x80 0x0f
  0x00 0xb8 0xa0 0x4f
  0x00 0xd0 0x40 0x0f
  0x00 0xd0 0x50 0x4f
  0x00 0xd8 0x80 0x0f
  0x00 0xd8 0xa0 0x4f
  0x00 0x20 0x40 0x2f
  0x00 0x20 0x50 0x6f
  0x00 0x28 0x80 0x2f
  0x00 0x28 0xa0 0x6f
  0x00 0x60 0x40 0x2f
  0x00 0x60 0x50 0x6f
  0x00 0x68 0x80 0x2f
  0x00 0x68 0xa0 0x6f
  0x00 0xa0 0x40 0x2f
  0x00 0xa0 0x50 0x6f
  0x00 0xa8 0x80 0x2f
  0x00 0xa8 0xa0 0x6f

# CHECK: fmla.2s	v0, v0, v0[0]
# CHECK: fmla.4s	v0, v0, v0[1]
# CHECK: fmla.2d	v0, v0, v0[1]
# CHECK: fmls.2s	v0, v0, v0[0]
# CHECK: fmls.4s	v0, v0, v0[1]
# CHECK: fmls.2d	v0, v0, v0[1]
# CHECK: fmulx.2s	v0, v0, v0[0]
# CHECK: fmulx.4s	v0, v0, v0[1]
# CHECK: fmulx.2d	v0, v0, v0[1]
# CHECK: fmul.2s	v0, v0, v0[0]
# CHECK: fmul.4s	v0, v0, v0[1]
# CHECK: fmul.2d	v0, v0, v0[1]
# CHECK: mla.4h	v0, v0, v0[0]
# CHECK: mla.8h	v0, v0, v0[1]
# CHECK: mla.2s	v0, v0, v0[2]
# CHECK: mla.4s	v0, v0, v0[3]
# CHECK: mls.4h	v0, v0, v0[0]
# CHECK: mls.8h	v0, v0, v0[1]
# CHECK: mls.2s	v0, v0, v0[2]
# CHECK: mls.4s	v0, v0, v0[3]
# CHECK: mul.4h	v0, v0, v0[0]
# CHECK: mul.8h	v0, v0, v0[1]
# CHECK: mul.2s	v0, v0, v0[2]
# CHECK: mul.4s	v0, v0, v0[3]
# CHECK: smlal.4s	v0, v0, v0[0]
# CHECK: smlal2.4s	v0, v0, v0[1]
# CHECK: smlal.2d	v0, v0, v0[2]
# CHECK: smlal2.2d	v0, v0, v0[3]
# CHECK: smlsl.4s	v0, v0, v0[0]
# CHECK: smlsl2.4s	v0, v0, v0[1]
# CHECK: smlsl.2d	v0, v0, v0[2]
# CHECK: smlsl2.2d	v0, v0, v0[3]
# CHECK: smull.4s	v0, v0, v0[0]
# CHECK: smull2.4s	v0, v0, v0[1]
# CHECK: smull.2d	v0, v0, v0[2]
# CHECK: smull2.2d	v0, v0, v0[3]
# CHECK: sqdmlal.4s	v0, v0, v0[0]
# CHECK: sqdmlal2.4s	v0, v0, v0[1]
# CHECK: sqdmlal.2d	v0, v0, v0[2]
# CHECK: sqdmlal2.2d	v0, v0, v0[3]
# CHECK: sqdmlsl.4s	v0, v0, v0[0]
# CHECK: sqdmlsl2.4s	v0, v0, v0[1]
# CHECK: sqdmlsl.2d	v0, v0, v0[2]
# CHECK: sqdmlsl2.2d	v0, v0, v0[3]
# CHECK: sqdmulh.4h	v0, v0, v0[0]
# CHECK: sqdmulh.8h	v0, v0, v0[1]
# CHECK: sqdmulh.2s	v0, v0, v0[2]
# CHECK: sqdmulh.4s	v0, v0, v0[3]
# CHECK: sqdmull.4s	v0, v0, v0[0]
# CHECK: sqdmull2.4s	v0, v0, v0[1]
# CHECK: sqdmull.2d	v0, v0, v0[2]
# CHECK: sqdmull2.2d	v0, v0, v0[3]
# CHECK: sqrdmulh.4h	v0, v0, v0[0]
# CHECK: sqrdmulh.8h	v0, v0, v0[1]
# CHECK: sqrdmulh.2s	v0, v0, v0[2]
# CHECK: sqrdmulh.4s	v0, v0, v0[3]
# CHECK: umlal.4s	v0, v0, v0[0]
# CHECK: umlal2.4s	v0, v0, v0[1]
# CHECK: umlal.2d	v0, v0, v0[2]
# CHECK: umlal2.2d	v0, v0, v0[3]
# CHECK: umlsl.4s	v0, v0, v0[0]
# CHECK: umlsl2.4s	v0, v0, v0[1]
# CHECK: umlsl.2d	v0, v0, v0[2]
# CHECK: umlsl2.2d	v0, v0, v0[3]
# CHECK: umull.4s	v0, v0, v0[0]
# CHECK: umull2.4s	v0, v0, v0[1]
# CHECK: umull.2d	v0, v0, v0[2]
# CHECK: umull2.2d	v0, v0, v0[3]


#===-------------------------------------------------------------------------===
# AdvSIMD scalar + shift instructions
#===-------------------------------------------------------------------------===

  0x00 0x54 0x41 0x5f
  0x00 0x54 0x41 0x7f
  0x00 0x9c 0x09 0x5f
  0x00 0x9c 0x12 0x5f
  0x00 0x9c 0x23 0x5f
  0x00 0x8c 0x09 0x7f
  0x00 0x8c 0x12 0x7f
  0x00 0x8c 0x23 0x7f
  0x00 0x64 0x09 0x7f
  0x00 0x64 0x12 0x7f
  0x00 0x64 0x23 0x7f
  0x00 0x64 0x44 0x7f
  0x00 0x74 0x09 0x5f
  0x00 0x74 0x12 0x5f
  0x00 0x74 0x23 0x5f
  0x00 0x74 0x44 0x5f
  0x00 0x94 0x09 0x5f
  0x00 0x94 0x12 0x5f
  0x00 0x94 0x23 0x5f
  0x00 0x84 0x09 0x7f
  0x00 0x84 0x12 0x7f
  0x00 0x84 0x23 0x7f
  0x00 0x44 0x41 0x7f
  0x00 0x24 0x41 0x5f
  0x00 0x34 0x41 0x5f
  0x00 0x04 0x41 0x5f
  0x00 0xe4 0x21 0x7f
  0x00 0xe4 0x42 0x7f
  0x00 0x9c 0x09 0x7f
  0x00 0x9c 0x12 0x7f
  0x00 0x9c 0x23 0x7f
  0x00 0x74 0x09 0x7f
  0x00 0x74 0x12 0x7f
  0x00 0x74 0x23 0x7f
  0x00 0x74 0x44 0x7f
  0x00 0x94 0x09 0x7f
  0x00 0x94 0x12 0x7f
  0x00 0x94 0x23 0x7f
  0x00 0x24 0x41 0x7f
  0x00 0x34 0x41 0x7f
  0x00 0x04 0x41 0x7f
  0x00 0x14 0x41 0x7f

# CHECK: shl	d0, d0, #0x1
# CHECK: sli	d0, d0, #0x1
# CHECK: sqrshrn	b0, h0, #0x7
# CHECK: sqrshrn	h0, s0, #0xe
# CHECK: sqrshrn	s0, d0, #0x1d
# CHECK: sqrshrun	b0, h0, #0x7
# CHECK: sqrshrun	h0, s0, #0xe
# CHECK: sqrshrun	s0, d0, #0x1d
# CHECK: sqshlu	b0, b0, #0x1
# CHECK: sqshlu	h0, h0, #0x2
# CHECK: sqshlu	s0, s0, #0x3
# CHECK: sqshlu	d0, d0, #0x4
# CHECK: sqshl	b0, b0, #0x1
# CHECK: sqshl	h0, h0, #0x2
# CHECK: sqshl	s0, s0, #0x3
# CHECK: sqshl	d0, d0, #0x4
# CHECK: sqshrn	b0, h0, #0x7
# CHECK: sqshrn	h0, s0, #0xe
# CHECK: sqshrn	s0, d0, #0x1d
# CHECK: sqshrun	b0, h0, #0x7
# CHECK: sqshrun	h0, s0, #0xe
# CHECK: sqshrun	s0, d0, #0x1d
# CHECK: sri	d0, d0, #0x3f
# CHECK: srshr	d0, d0, #0x3f
# CHECK: srsra	d0, d0, #0x3f
# CHECK: sshr	d0, d0, #0x3f
# CHECK: ucvtf	s0, s0, #0x1f
# CHECK: ucvtf	d0, d0, #0x3e
# CHECK: uqrshrn	b0, h0, #0x7
# CHECK: uqrshrn	h0, s0, #0xe
# CHECK: uqrshrn	s0, d0, #0x1d
# CHECK: uqshl	b0, b0, #0x1
# CHECK: uqshl	h0, h0, #0x2
# CHECK: uqshl	s0, s0, #0x3
# CHECK: uqshl	d0, d0, #0x4
# CHECK: uqshrn	b0, h0, #0x7
# CHECK: uqshrn	h0, s0, #0xe
# CHECK: uqshrn	s0, d0, #0x1d
# CHECK: urshr	d0, d0, #0x3f
# CHECK: ursra	d0, d0, #0x3f
# CHECK: ushr	d0, d0, #0x3f
# CHECK: usra	d0, d0, #0x3f

#===-------------------------------------------------------------------------===
# AdvSIMD vector + shift instructions
#===-------------------------------------------------------------------------===

  0x00 0xfc 0x21 0x0f
  0x00 0xfc 0x22 0x4f
  0x00 0xfc 0x43 0x4f
  0x00 0xfc 0x21 0x2f
  0x00 0xfc 0x22 0x6f
  0x00 0xfc 0x43 0x6f
  0x00 0x8c 0x09 0x0f
  0x00 0x8c 0x0a 0x4f
  0x00 0x8c 0x13 0x0f
  0x00 0x8c 0x14 0x4f
  0x00 0x8c 0x25 0x0f
  0x00 0x8c 0x26 0x4f
  0x00 0xe4 0x21 0x0f
  0x00 0xe4 0x22 0x4f
  0x00 0xe4 0x43 0x4f
  0x00 0x54 0x09 0x0f
  0x00 0x54 0x0a 0x4f
  0x00 0x54 0x13 0x0f
  0x00 0x54 0x14 0x4f
  0x00 0x54 0x25 0x0f
  0x00 0x54 0x26 0x4f
  0x00 0x54 0x47 0x4f
  0x00 0x84 0x09 0x0f
  0x00 0x84 0x0a 0x4f
  0x00 0x84 0x13 0x0f
  0x00 0x84 0x14 0x4f
  0x00 0x84 0x25 0x0f
  0x00 0x84 0x26 0x4f
  0x00 0x54 0x09 0x2f
  0x00 0x54 0x0a 0x6f
  0x00 0x54 0x13 0x2f
  0x00 0x54 0x14 0x6f
  0x00 0x54 0x25 0x2f
  0x00 0x54 0x26 0x6f
  0x00 0x54 0x47 0x6f
  0x00 0x9c 0x09 0x0f
  0x00 0x9c 0x0a 0x4f
  0x00 0x9c 0x13 0x0f
  0x00 0x9c 0x14 0x4f
  0x00 0x9c 0x25 0x0f
  0x00 0x9c 0x26 0x4f
  0x00 0x8c 0x09 0x2f
  0x00 0x8c 0x0a 0x6f
  0x00 0x8c 0x13 0x2f
  0x00 0x8c 0x14 0x6f
  0x00 0x8c 0x25 0x2f
  0x00 0x8c 0x26 0x6f
  0x00 0x64 0x09 0x2f
  0x00 0x64 0x0a 0x6f
  0x00 0x64 0x13 0x2f
  0x00 0x64 0x14 0x6f
  0x00 0x64 0x25 0x2f
  0x00 0x64 0x26 0x6f
  0x00 0x64 0x47 0x6f
  0x00 0x74 0x09 0x0f
  0x00 0x74 0x0a 0x4f
  0x00 0x74 0x13 0x0f
  0x00 0x74 0x14 0x4f
  0x00 0x74 0x25 0x0f
  0x00 0x74 0x26 0x4f
  0x00 0x74 0x47 0x4f
  0x00 0x94 0x09 0x0f
  0x00 0x94 0x0a 0x4f
  0x00 0x94 0x13 0x0f
  0x00 0x94 0x14 0x4f
  0x00 0x94 0x25 0x0f
  0x00 0x94 0x26 0x4f
  0x00 0x84 0x09 0x2f
  0x00 0x84 0x0a 0x6f
  0x00 0x84 0x13 0x2f
  0x00 0x84 0x14 0x6f
  0x00 0x84 0x25 0x2f
  0x00 0x84 0x26 0x6f
  0x00 0x44 0x09 0x2f
  0x00 0x44 0x0a 0x6f
  0x00 0x44 0x13 0x2f
  0x00 0x44 0x14 0x6f
  0x00 0x44 0x25 0x2f
  0x00 0x44 0x26 0x6f
  0x00 0x44 0x47 0x6f
  0x00 0x24 0x09 0x0f
  0x00 0x24 0x0a 0x4f
  0x00 0x24 0x13 0x0f
  0x00 0x24 0x14 0x4f
  0x00 0x24 0x25 0x0f
  0x00 0x24 0x26 0x4f
  0x00 0x24 0x47 0x4f
  0x00 0x34 0x09 0x0f
  0x00 0x34 0x0a 0x4f
  0x00 0x34 0x13 0x0f
  0x00 0x34 0x14 0x4f
  0x00 0x34 0x25 0x0f
  0x00 0x34 0x26 0x4f
  0x00 0x34 0x47 0x4f
  0x00 0xa4 0x09 0x0f
  0x00 0xa4 0x0a 0x4f
  0x00 0xa4 0x13 0x0f
  0x00 0xa4 0x14 0x4f
  0x00 0xa4 0x25 0x0f
  0x00 0xa4 0x26 0x4f
  0x00 0x04 0x09 0x0f
  0x00 0x04 0x0a 0x4f
  0x00 0x04 0x13 0x0f
  0x00 0x04 0x14 0x4f
  0x00 0x04 0x25 0x0f
  0x00 0x04 0x26 0x4f
  0x00 0x04 0x47 0x4f
  0x00 0x04 0x09 0x0f
  0x00 0x14 0x0a 0x4f
  0x00 0x14 0x13 0x0f
  0x00 0x14 0x14 0x4f
  0x00 0x14 0x25 0x0f
  0x00 0x14 0x26 0x4f
  0x00 0x14 0x47 0x4f
  0x00 0x14 0x40 0x5f
  0x00 0xe4 0x21 0x2f
  0x00 0xe4 0x22 0x6f
  0x00 0xe4 0x43 0x6f
  0x00 0x9c 0x09 0x2f
  0x00 0x9c 0x0a 0x6f
  0x00 0x9c 0x13 0x2f
  0x00 0x9c 0x14 0x6f
  0x00 0x9c 0x25 0x2f
  0x00 0x9c 0x26 0x6f
  0x00 0x74 0x09 0x2f
  0x00 0x74 0x0a 0x6f
  0x00 0x74 0x13 0x2f
  0x00 0x74 0x14 0x6f
  0x00 0x74 0x25 0x2f
  0x00 0x74 0x26 0x6f
  0x00 0x74 0x47 0x6f
  0x00 0x94 0x09 0x2f
  0x00 0x94 0x0a 0x6f
  0x00 0x94 0x13 0x2f
  0x00 0x94 0x14 0x6f
  0x00 0x94 0x25 0x2f
  0x00 0x94 0x26 0x6f
  0x00 0x24 0x09 0x2f
  0x00 0x24 0x0a 0x6f
  0x00 0x24 0x13 0x2f
  0x00 0x24 0x14 0x6f
  0x00 0x24 0x25 0x2f
  0x00 0x24 0x26 0x6f
  0x00 0x24 0x47 0x6f
  0x00 0x34 0x09 0x2f
  0x00 0x34 0x0a 0x6f
  0x00 0x34 0x13 0x2f
  0x00 0x34 0x14 0x6f
  0x00 0x34 0x25 0x2f
  0x00 0x34 0x26 0x6f
  0x00 0x34 0x47 0x6f
  0x00 0xa4 0x09 0x2f
  0x00 0xa4 0x0a 0x6f
  0x00 0xa4 0x13 0x2f
  0x00 0xa4 0x14 0x6f
  0x00 0xa4 0x25 0x2f
  0x00 0xa4 0x26 0x6f
  0x00 0x04 0x09 0x2f
  0x00 0x04 0x0a 0x6f
  0x00 0x04 0x13 0x2f
  0x00 0x04 0x14 0x6f
  0x00 0x04 0x25 0x2f
  0x00 0x04 0x26 0x6f
  0x00 0x04 0x47 0x6f
  0x00 0x14 0x09 0x2f
  0x00 0x14 0x0a 0x6f
  0x00 0x14 0x13 0x2f
  0x00 0x14 0x14 0x6f
  0x00 0x14 0x25 0x2f
  0x00 0x14 0x26 0x6f
  0x00 0x14 0x47 0x6f

# CHECK: fcvtzs.2s	v0, v0, #0x1f
# CHECK: fcvtzs.4s	v0, v0, #0x1e
# CHECK: fcvtzs.2d	v0, v0, #0x3d
# CHECK: fcvtzu.2s	v0, v0, #0x1f
# CHECK: fcvtzu.4s	v0, v0, #0x1e
# CHECK: fcvtzu.2d	v0, v0, #0x3d
# CHECK: rshrn.8b	v0, v0, #0x7
# CHECK: rshrn2.16b	v0, v0, #0x6
# CHECK: rshrn.4h	v0, v0, #0xd
# CHECK: rshrn2.8h	v0, v0, #0xc
# CHECK: rshrn.2s	v0, v0, #0x1b
# CHECK: rshrn2.4s	v0, v0, #0x1a
# CHECK: scvtf.2s	v0, v0, #0x1f
# CHECK: scvtf.4s	v0, v0, #0x1e
# CHECK: scvtf.2d	v0, v0, #0x3d
# CHECK: shl.8b	v0, v0, #0x1
# CHECK: shl.16b	v0, v0, #0x2
# CHECK: shl.4h	v0, v0, #0x3
# CHECK: shl.8h	v0, v0, #0x4
# CHECK: shl.2s	v0, v0, #0x5
# CHECK: shl.4s	v0, v0, #0x6
# CHECK: shl.2d	v0, v0, #0x7
# CHECK: shrn.8b	v0, v0, #0x7
# CHECK: shrn2.16b	v0, v0, #0x6
# CHECK: shrn.4h	v0, v0, #0xd
# CHECK: shrn2.8h	v0, v0, #0xc
# CHECK: shrn.2s	v0, v0, #0x1b
# CHECK: shrn2.4s	v0, v0, #0x1a
# CHECK: sli.8b	v0, v0, #0x1
# CHECK: sli.16b	v0, v0, #0x2
# CHECK: sli.4h	v0, v0, #0x3
# CHECK: sli.8h	v0, v0, #0x4
# CHECK: sli.2s	v0, v0, #0x5
# CHECK: sli.4s	v0, v0, #0x6
# CHECK: sli.2d	v0, v0, #0x7
# CHECK: sqrshrn.8b	v0, v0, #0x7
# CHECK: sqrshrn2.16b	v0, v0, #0x6
# CHECK: sqrshrn.4h	v0, v0, #0xd
# CHECK: sqrshrn2.8h	v0, v0, #0xc
# CHECK: sqrshrn.2s	v0, v0, #0x1b
# CHECK: sqrshrn2.4s	v0, v0, #0x1a
# CHECK: sqrshrun.8b	v0, v0, #0x7
# CHECK: sqrshrun2.16b	v0, v0, #0x6
# CHECK: sqrshrun.4h	v0, v0, #0xd
# CHECK: sqrshrun2.8h	v0, v0, #0xc
# CHECK: sqrshrun.2s	v0, v0, #0x1b
# CHECK: sqrshrun2.4s	v0, v0, #0x1a
# CHECK: sqshlu.8b	v0, v0, #0x1
# CHECK: sqshlu.16b	v0, v0, #0x2
# CHECK: sqshlu.4h	v0, v0, #0x3
# CHECK: sqshlu.8h	v0, v0, #0x4
# CHECK: sqshlu.2s	v0, v0, #0x5
# CHECK: sqshlu.4s	v0, v0, #0x6
# CHECK: sqshlu.2d	v0, v0, #0x7
# CHECK: sqshl.8b	v0, v0, #0x1
# CHECK: sqshl.16b	v0, v0, #0x2
# CHECK: sqshl.4h	v0, v0, #0x3
# CHECK: sqshl.8h	v0, v0, #0x4
# CHECK: sqshl.2s	v0, v0, #0x5
# CHECK: sqshl.4s	v0, v0, #0x6
# CHECK: sqshl.2d	v0, v0, #0x7
# CHECK: sqshrn.8b	v0, v0, #0x7
# CHECK: sqshrn2.16b	v0, v0, #0x6
# CHECK: sqshrn.4h	v0, v0, #0xd
# CHECK: sqshrn2.8h	v0, v0, #0xc
# CHECK: sqshrn.2s	v0, v0, #0x1b
# CHECK: sqshrn2.4s	v0, v0, #0x1a
# CHECK: sqshrun.8b	v0, v0, #0x7
# CHECK: sqshrun2.16b	v0, v0, #0x6
# CHECK: sqshrun.4h	v0, v0, #0xd
# CHECK: sqshrun2.8h	v0, v0, #0xc
# CHECK: sqshrun.2s	v0, v0, #0x1b
# CHECK: sqshrun2.4s	v0, v0, #0x1a
# CHECK: sri.8b	v0, v0, #0x7
# CHECK: sri.16b	v0, v0, #0x6
# CHECK: sri.4h	v0, v0, #0xd
# CHECK: sri.8h	v0, v0, #0xc
# CHECK: sri.2s	v0, v0, #0x1b
# CHECK: sri.4s	v0, v0, #0x1a
# CHECK: sri.2d	v0, v0, #0x39
# CHECK: srshr.8b	v0, v0, #0x7
# CHECK: srshr.16b	v0, v0, #0x6
# CHECK: srshr.4h	v0, v0, #0xd
# CHECK: srshr.8h	v0, v0, #0xc
# CHECK: srshr.2s	v0, v0, #0x1b
# CHECK: srshr.4s	v0, v0, #0x1a
# CHECK: srshr.2d	v0, v0, #0x39
# CHECK: srsra.8b	v0, v0, #0x7
# CHECK: srsra.16b	v0, v0, #0x6
# CHECK: srsra.4h	v0, v0, #0xd
# CHECK: srsra.8h	v0, v0, #0xc
# CHECK: srsra.2s	v0, v0, #0x1b
# CHECK: srsra.4s	v0, v0, #0x1a
# CHECK: srsra.2d	v0, v0, #0x39
# CHECK: sshll.8h	v0, v0, #0x1
# CHECK: sshll2.8h	v0, v0, #0x2
# CHECK: sshll.4s	v0, v0, #0x3
# CHECK: sshll2.4s	v0, v0, #0x4
# CHECK: sshll.2d	v0, v0, #0x5
# CHECK: sshll2.2d	v0, v0, #0x6
# CHECK: sshr.8b	v0, v0, #0x7
# CHECK: sshr.16b	v0, v0, #0x6
# CHECK: sshr.4h	v0, v0, #0xd
# CHECK: sshr.8h	v0, v0, #0xc
# CHECK: sshr.2s	v0, v0, #0x1b
# CHECK: sshr.4s	v0, v0, #0x1a
# CHECK: sshr.2d	v0, v0, #0x39
# CHECK: sshr.8b	v0, v0, #0x7
# CHECK: ssra.16b	v0, v0, #0x6
# CHECK: ssra.4h	v0, v0, #0xd
# CHECK: ssra.8h	v0, v0, #0xc
# CHECK: ssra.2s	v0, v0, #0x1b
# CHECK: ssra.4s	v0, v0, #0x1a
# CHECK: ssra.2d	v0, v0, #0x39
# CHECK: ssra		d0, d0, #0x40
# CHECK: ucvtf.2s	v0, v0, #0x1f
# CHECK: ucvtf.4s	v0, v0, #0x1e
# CHECK: ucvtf.2d	v0, v0, #0x3d
# CHECK: uqrshrn.8b	v0, v0, #0x7
# CHECK: uqrshrn2.16b	v0, v0, #0x6
# CHECK: uqrshrn.4h	v0, v0, #0xd
# CHECK: uqrshrn2.8h	v0, v0, #0xc
# CHECK: uqrshrn.2s	v0, v0, #0x1b
# CHECK: uqrshrn2.4s	v0, v0, #0x1a
# CHECK: uqshl.8b	v0, v0, #0x1
# CHECK: uqshl.16b	v0, v0, #0x2
# CHECK: uqshl.4h	v0, v0, #0x3
# CHECK: uqshl.8h	v0, v0, #0x4
# CHECK: uqshl.2s	v0, v0, #0x5
# CHECK: uqshl.4s	v0, v0, #0x6
# CHECK: uqshl.2d	v0, v0, #0x7
# CHECK: uqshrn.8b	v0, v0, #0x7
# CHECK: uqshrn2.16b	v0, v0, #0x6
# CHECK: uqshrn.4h	v0, v0, #0xd
# CHECK: uqshrn2.8h	v0, v0, #0xc
# CHECK: uqshrn.2s	v0, v0, #0x1b
# CHECK: uqshrn2.4s	v0, v0, #0x1a
# CHECK: urshr.8b	v0, v0, #0x7
# CHECK: urshr.16b	v0, v0, #0x6
# CHECK: urshr.4h	v0, v0, #0xd
# CHECK: urshr.8h	v0, v0, #0xc
# CHECK: urshr.2s	v0, v0, #0x1b
# CHECK: urshr.4s	v0, v0, #0x1a
# CHECK: urshr.2d	v0, v0, #0x39
# CHECK: ursra.8b	v0, v0, #0x7
# CHECK: ursra.16b	v0, v0, #0x6
# CHECK: ursra.4h	v0, v0, #0xd
# CHECK: ursra.8h	v0, v0, #0xc
# CHECK: ursra.2s	v0, v0, #0x1b
# CHECK: ursra.4s	v0, v0, #0x1a
# CHECK: ursra.2d	v0, v0, #0x39
# CHECK: ushll.8h	v0, v0, #0x1
# CHECK: ushll2.8h	v0, v0, #0x2
# CHECK: ushll.4s	v0, v0, #0x3
# CHECK: ushll2.4s	v0, v0, #0x4
# CHECK: ushll.2d	v0, v0, #0x5
# CHECK: ushll2.2d	v0, v0, #0x6
# CHECK: ushr.8b	v0, v0, #0x7
# CHECK: ushr.16b	v0, v0, #0x6
# CHECK: ushr.4h	v0, v0, #0xd
# CHECK: ushr.8h	v0, v0, #0xc
# CHECK: ushr.2s	v0, v0, #0x1b
# CHECK: ushr.4s	v0, v0, #0x1a
# CHECK: ushr.2d	v0, v0, #0x39
# CHECK: usra.8b	v0, v0, #0x7
# CHECK: usra.16b	v0, v0, #0x6
# CHECK: usra.4h	v0, v0, #0xd
# CHECK: usra.8h	v0, v0, #0xc
# CHECK: usra.2s	v0, v0, #0x1b
# CHECK: usra.4s	v0, v0, #0x1a
# CHECK: usra.2d	v0, v0, #0x39


  0x00 0xe0 0x20 0x0e
  0x00 0xe0 0x20 0x4e
  0x00 0xe0 0xe0 0x0e
  0x00 0xe0 0xe0 0x4e

# CHECK: pmull.8h v0, v0, v0
# CHECK: pmull2.8h v0, v0, v0
# CHECK: pmull.1q v0, v0, v0
# CHECK: pmull2.1q v0, v0, v0

  0x41 0xd8 0x70 0x7e
  0x83 0xd8 0x30 0x7e
# CHECK: faddp.2d	d1, v2
# CHECK: faddp.2s	s3, v4

  0x82 0x60 0x01 0x4e
  0x80 0x60 0x01 0x0e
  0xa2 0x00 0x01 0x4e
  0xa0 0x00 0x01 0x0e
  0xa2 0x40 0x01 0x4e
  0xa0 0x40 0x01 0x0e
  0xc2 0x20 0x01 0x4e
  0xc0 0x20 0x01 0x0e

# CHECK: tbl.16b	v2, { v4, v5, v6, v7 }, v1
# CHECK: tbl.8b	v0, { v4, v5, v6, v7 }, v1
# CHECK: tbl.16b	v2, { v5 }, v1
# CHECK: tbl.8b	v0, { v5 }, v1
# CHECK: tbl.16b	v2, { v5, v6, v7 }, v1
# CHECK: tbl.8b	v0, { v5, v6, v7 }, v1
# CHECK: tbl.16b	v2, { v6, v7 }, v1
# CHECK: tbl.8b	v0, { v6, v7 }, v1
#
  0x82 0x70 0x01 0x4e
  0x80 0x70 0x01 0x0e
  0xa2 0x10 0x01 0x4e
  0xa0 0x10 0x01 0x0e
  0xa2 0x50 0x01 0x4e
  0xa0 0x50 0x01 0x0e
  0xc2 0x30 0x01 0x4e
  0xc0 0x30 0x01 0x0e

# CHECK: tbx.16b	v2, { v4, v5, v6, v7 }, v1
# CHECK: tbx.8b	v0, { v4, v5, v6, v7 }, v1
# CHECK: tbx.16b	v2, { v5 }, v1
# CHECK: tbx.8b	v0, { v5 }, v1
# CHECK: tbx.16b	v2, { v5, v6, v7 }, v1
# CHECK: tbx.8b	v0, { v5, v6, v7 }, v1
# CHECK: tbx.16b	v2, { v6, v7 }, v1
# CHECK: tbx.8b	v0, { v6, v7 }, v1
#

0x00 0x80 0x20 0x0e
0x00 0x80 0x20 0x4e
0x00 0x80 0xa0 0x0e
0x00 0x80 0xa0 0x4e

# CHECK: smlal.8h v0, v0, v0
# CHECK: smlal2.8h v0, v0, v0
# CHECK: smlal.2d v0, v0, v0
# CHECK: smlal2.2d v0, v0, v0

0x00 0x80 0x20 0x2e
0x00 0x80 0x20 0x6e
0x00 0x80 0xa0 0x2e
0x00 0x80 0xa0 0x6e

# CHECK: umlal.8h v0, v0, v0
# CHECK: umlal2.8h v0, v0, v0
# CHECK: umlal.2d v0, v0, v0
# CHECK: umlal2.2d v0, v0, v0

0x00 0x90 0x60 0x5e
0x00 0x90 0xa0 0x5e
0x00 0xb0 0x60 0x5e
0x00 0xb0 0xa0 0x5e

# CHECK: sqdmlal s0, h0, h0
# CHECK: sqdmlal d0, s0, s0
# CHECK: sqdmlsl s0, h0, h0
# CHECK: sqdmlsl d0, s0, s0

0xaa 0xc5 0xc7 0x4d
0xaa 0xc9 0xc7 0x4d
0xaa 0xc1 0xc7 0x4d

# CHECK: ld1r.8h { v10 }, [x13], x7
# CHECK: ld1r.4s { v10 }, [x13], x7
# CHECK: ld1r.16b { v10 }, [x13], x7

0x00 0xd0 0x60 0x5e
0x00 0xd0 0xa0 0x5e
# CHECK: sqdmull	s0, h0, h0
# CHECK: sqdmull	d0, s0, s0

0x00 0xd8 0xa1 0x7e
0x00 0xd8 0xe1 0x7e

# CHECK: frsqrte s0, s0
# CHECK: frsqrte d0, d0

0xca 0xcd 0xc7 0x4d
0xea 0xc9 0xe7 0x4d
0xea 0xe9 0xc7 0x4d
0xea 0xe9 0xe7 0x4d
# CHECK: ld1r.2d	{ v10 }, [x14], x7
# CHECK: ld2r.4s	{ v10, v11 }, [x15], x7
# CHECK: ld3r.4s	{ v10, v11, v12 }, [x15], x7
# CHECK: ld4r.4s	{ v10, v11, v12, v13 }, [x15], x7

#===-------------------------------------------------------------------------===
# AdvSIMD scalar three same
#===-------------------------------------------------------------------------===
0x62 0xdc 0x21 0x5e
# CHECK: fmulx	s2, s3, s1
0x62 0xdc 0x61 0x5e
# CHECK: fmulx	d2, d3, d1


# rdar://12511369
0xe8 0x6b 0xdf 0x4c
# CHECK: ld1.4s	{ v8, v9, v10 }, [sp], #48
